1

私のアプリでは、アイコンが非表示のヘッダーがあり、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); 何が間違っているのかわかりません。任意の提案やヘルプをいただければ幸いです

4

2 に答える 2

1

img が null だと思います。メソッド setImgVisibility を呼び出す前に、この値がどこに設定されているかを調べて、発生することを確認する必要があります。

人々がさらに支援できるように、完全なコードをさらに表示します。

さらに、検索アダプターへの静的参照を使用していることに気付きました。静的を使用する場合は特に注意が必要です。特に、画像がコンテキストにバインドされる可能性があるため、画像の参照が関係する場合は、 static を使用すると、メモリ リークが発生します。(これは以前の問題であり、まだ有効かどうかはわかりませんが、静的参照の使用は避けます)。

より多くのコードがなければ、私たちはあなたを適切に助けることができないでしょう. たとえば、ログイン時にアクティビティを切り替えていますか? もしそうなら、これはまったく機能しません。

[以下のコメントを考えると]アクティビティを切り替えると、リストビューを含むアクティビティが破棄され、再構築されてから、それに戻ります。または、少なくともアクティビティのライフサイクルを通過します。これは、ヘッダー画像のインスタンス化中にアイコンを設定できることを意味します。

ログイン状態をアプリケーションのプロパティまたは設定として保存できます。ヘッダー画像を設定するときにこの値を取得し、それに応じて画像を設定します。

于 2012-12-04T08:31:48.770 に答える
0

img オブジェクトが null です。あなたの img オブジェクトは View v と同じですか? setImgVisibility() で v を渡し、v.setVisibility(View.VISIBLE) を設定できます。

于 2012-12-04T09:02:33.230 に答える