在我的应用中,我有一个隐藏了图标的标题,当我单击listview
时,我有一个带有listview
的适配器。我使用监听器进入登录屏幕,成功登录后应返回到listview(adapter)和图标应该在标题上可见。
在登录活动中,我有以下代码:
public void onClick(View v) {
String password = etPassword.getText().toString();
if(password.equals("guest")){
SearchAdapter.setImgVisibility();
} else {
//-----
}
finish();
}
在我的适配器中,我按以下方式调用
setImgVisibility()
,但它不起作用public static void setImgVisibility() {
img.setVisibility(View.VISIBLE);
}
我在
Nullpointerexception
行附近出现了img.setVisibility(View.VISIBLE);
我被困在这里,不知道我在做什么错。任何建议或帮助表示赞赏
最佳答案
我可以想象img为空。您需要查看设置此值的位置,并确保在调用setImgVisibility方法之前发生此情况。
显示更多完整代码,以帮助人们进一步提供帮助。
此外,我刚刚注意到您对搜索适配器使用了静态引用,因此使用静态变量时要格外小心,尤其是在涉及图像的任何引用时,因为图像可以绑定到上下文,因此除非您将静态的,最终会导致内存泄漏。 (这曾经是一个老问题,不确定它是否仍然有效,但是我仍然会避免使用静态引用)。
没有更多的代码,我们将不可能正确地为您提供帮助。例如,您要在登录时切换活动吗?如果是这样,那将根本行不通。
[给出下面的评论]如果您切换活动,则包含列表视图的活动将被销毁,然后重新构建,然后导航回到该活动。否则它将至少经历活动生命周期。这意味着您可以在标题img的实例化期间设置图标。
您可以将登录状态存储为应用程序的属性或首选项。设置标题图像并相应设置图像时,请获取此值。
关于android - Android:setImgVisibility()错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13698762/