2017-05-17 16 views
-1

選択した項目が何であるかを知りたいこのスピナーがあります。Android:nullオブジェクト参照をスピナーから選択した場合

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    spinner = (Spinner) findViewById(R.id.spinner); 
    adapter = ArrayAdapter.createFromResource(this, R.array.teams, android.R.layout.simple_spinner_item); 
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
    spinner.setAdapter(adapter); 
    spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
     @Override 
     public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) { 
      teamText = parent.getItemAtPosition(pos).toString(); 
     } 

     @Override 
     public void onNothingSelected(AdapterView<?> adapterView) { 

     } 
    }); 
} 

が、それはアプリがクラッシュし、そのその部分に取得し、スピナーがnullであることを述べている何らかの理由:なぜ、この可能性のあるアイデアを

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.brandon.checkpoints/com.example.jit.checkpoints.MapsActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Spinner.setAdapter(android.widget.SpinnerAdapter)' on a null object reference 
.... 
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Spinner.setAdapter(android.widget.SpinnerAdapter)' on a null object reference 

をこれは私が現在実行しているものです起こっている?私はスピナーがnullであることを知っていますが、私が理解しようとしているのはなぜそれがnullであるかです。スピナーがこれ以前の別の活動に参加しているためかもしれませんか?私は何をしようとしていることである:

1)利用者は、1

2)ユーザがスピナーから選択した値を変数に入れて、次のページ(活動)に、次のクリックする活動にスピナーから経路を選択します。

3)変数は、ユーザが(取得したルートを決定するために使用した例:ユーザーがスピナから1を選択した場合、ユーザは、ユーザが2を選択した場合、それらはルート2など)

+0

[NullPointerExceptionとは何ですか?それを修正するにはどうすればいいですか?](http://stackoverflow.com/questions/218384/what-is-a-nullpointerexception-and-how-do-i-fix -it) – ChrisStillwell

+0

@ChrisStillwell 私はスピナーがヌルですが、私が理解しようとしているのはなぜそれがヌルなのかです。スピナーがこのコードが実行された前の別のアクティビティにあるためかもしれませんか? – jit

+0

findViewByIdを呼び出す前にレイアウトを拡張していないので、nullです。 – ChrisStillwell

答えて

1
を取得し、経路1を取得します

あるアクティビティから別のアクティビティにデータを渡す必要があります。 How do I pass data between Activities in Android application?を参照してください。

+0

setContentは、全長コードで、findViewByIdの前にあります。スピナーがこのコードが実行された前の別のアクティビティにあるためかもしれませんか? – jit

+0

あなたはsetcontentviewで渡すXMLを投稿できますか? – Saurabh

+0

https://pastebin.com/bNWr9jDL – jit

1

idがspinnerSpinnerウィジェットを含む正しいレイアウトXMLを使用していることを確認してください。

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.your_layout_that_contains_spinner); 
    spinner = (Spinner) findViewById(R.id.spinner); 

    ............. 
    ...................... 
} 
0

私が把握しようとしている、それがnullだ理由です。スピナーがこれ以前の別の活動に参加しているためかもしれませんか?

はい、これはおそらく問題です。 findViewById()は、現在のアクティビティのビュー階層のみを検索します。他のアクティビティーでビューを取得するために使用することはできません。代わりに、インテント内のアクティビティ間でデータを渡す必要があります。これを行う方法の詳細については、Start Another Activityを参照してください。

関連する問題