在我的应用中,我有一个隐藏了图标的标题,当我单击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/

10-10 15:05