2011-06-21 7 views
-1

次のコードは、のNullPointerException投げている:それが原因onItemSelected(...)方法でexplanation = (TextView) findViewById(R.id.picker_explanation_text);のスローされアンドロイドonItemSelectedにNullPointer

public class test extends Activity implements OnItemSelectedListener { 
    private TextView explanation; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.psqlpicker); 

     explanation = (TextView) findViewById(R.id.picker_explanation_text); 

     Spinner spinner = (Spinner) findViewById(R.id.spinner); 
     ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
       this, R.array.picker_array, 
       android.R.layout.simple_spinner_item); 
     adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
     spinner.setOnItemSelectedListener(new test()); 
     spinner.setAdapter(adapter); 
    } 

    @Override 
    public void onItemSelected(AdapterView<?> parent, View view, int pos, 
      long id) { 
     explanation = (TextView) findViewById(R.id.picker_explanation_text); 
    } 
} 

を、私は、なぜ分かりません。結局のところ、onCreate(...)メソッドで働いています。代わりにあなたがターゲットとして、あなたの本当の活動を使用したい

spinner.setOnItemSelectedListener(new test()); 

使用

spinner.setOnItemSelectedListener(this); 

+0

あなたが参照した実際の行は、NPEを投げることはまずありません。説明が別の場所で参照されているときにnullが返され、NPEがスローされるという実際の問題ですか? – antlersoft

+0

この行を削除するとNPEはスローされません。私は再びそれを入れ、NPEは再び投げられる。他の何かは奇妙です: "説明"はonCreateメソッドで "満たされる"必要がありますが、onItemSelectedメソッドではまだnullです。 – deimos1988

答えて

1

。クラッシュと呼ばれるときにコンテキストで初期化されない新しいオブジェクトを作成しています。

+0

ありがとう、私の問題を解決しました。私はチュートリアルからそれをコピーし、あまり考えなかった。しかし、それは完璧な意味を持っています。 – deimos1988

関連する問題