1

在我的应用程序中,我有一个隐藏图标的标题,我有一个适配器,listview当我单击时,listview我使用侦听器进入登录屏幕,当登录成功时应该返回到 listview(适配器)并且图标应该在标题。

在登录活动中,我有以下代码:

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); ,不知道我做错了什么。任何建议或帮助表示赞赏

4

2 回答 2

1

我会想象 img 是空的。您需要查看此值的设置位置,并确保在调用方法 setImgVisibility 之前发生。

显示更多完整代码以供人们进一步帮助。

此外,我刚刚注意到您使用了对搜索适配器的静态引用,您应该非常小心使用静态,尤其是在涉及图像的任何引用的情况下,因为图像可以绑定到上下文,因此除非您取消static 你最终会出现内存泄漏。(这曾经是一个老问题,不确定它是否仍然有效,但我仍然会避免使用静态引用)。

如果没有更多代码,我们可能无法为您提供适当的帮助。例如,您是否在登录时切换活动?如果你是,这根本行不通。

[给出下面的评论]如果您切换活动,那么包含列表视图的活动将被销毁然后重建,然后您导航回它。或者它至少会经历活动生命周期。这意味着您可以在标头 img 的实例化期间设置图标。

您可以将登录状态存储为应用程序的属性或首选项。设置标题图像时获取此值并相应地设置图像。

于 2012-12-04T08:31:48.770 回答
0

您的 img 对象为空。您的 img 对象是否与 View v 相同,那么您可以在 setImgVisibility() 中传递 v 然后设置 v.setVisibility(View.VISIBLE)

于 2012-12-04T09:02:33.230 回答