2

私はここで考えられるすべての質問を試しましたが、それを回避することができませんでした。

宣言するJavaファイル(Androidアクティビティ)があります

private someAdapter someAdapterObj;

onCreate()内でコンストラクターを呼び出し、アダプターがインスタンス化されるようにします。

this.someAdapterObj= new someAdapter (this,
                       R.layout.item_row,someAdapter.getAllNews());

someAdapterファイルの中に、私は持っています

private static someArrayList;

someAdapter内にもaddtoarraylist()があります。

ここで、mainActivityのonCreateからaddtoarraylist()を呼び出しますが、アダプターをインスタンス化する前に呼び出します。arraylistは静的であるため、これが可能になるはずです。しかし、arraylistに追加すると、nullpointer例外が発生します。誰か助けてくれませんか?

4

1 に答える 1

4

タイプがクラス(プリミティブではない)であるインスタンスまたは静的変数は、デフォルトで。になりnullます。あなたはそれを初期化する必要があります-例えば:

private static List<Foo> someArrayList = new ArrayList<Foo>();

ただし

  • ArrayListスレッドセーフではないため、同期が必要になります
  • このような静的変数の使用は、コードの臭い(グローバル状態)のビットです。コンポーネントを適切に接続できれば、グローバルな状態を必要としないので、通常はよりクリーンです。
于 2013-01-19T23:12:00.993 に答える