2012-03-30 24 views
0

同じアクティビティに渡された2つの異なるアクティビティから文字列配列を取得しようとしています。インテントを扱うときにNULLポインタ例外が発生する

活動A:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.media_player); 


    chosen2 = this.getIntent().getStringArrayExtra("chosenkey"); //"chosenkey" is from activity B 

    songlist = this.getIntent().getStringArrayExtra("songsavekey"); //"songsavekey" is from activity C 

アクティビティB:

public void onClick(View v) { 
      // TODO Auto-generated method stub 

      Intent goToMediaPlayer = new Intent(PlaylistSelectActivity.this, MediaPlayerActivity.class);     
      goToMediaPlayer.putExtra("chosenkey", chosen); 
      startActivity(goToMediaPlayer); 
     } 
    }); 

活動C

public void onClick(View v) { 
      // TODO Auto-generated method stub 

      Intent myIntent = new Intent(getApplicationContext(), MediaPlayerActivity.class); 
      myIntent.putExtra("songsavekey", songsave); 
      myIntent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); 
      startActivity(myIntent); 
     } 
    }); 

私は他をコメントアウトした場合、私は個別に各配列を得ることができますが、彼らは「とき一緒に再アクティビティAを開始するとnullポインタの例外が発生します。私は何かがシンプルで誤っていると思っています意図について何かを知っているが、私は何を探すべきか分からない...

答えて

0

あなたのアプローチは間違っている。 2つの異なるアクティビティから同じアクティビティを開始することはできません。したがって、2つの異なるインテントが呼び出されたときにonCreateが2回コールされます。あなたは、これは、アクティビティB に活動Cから

送信「songsavekeyを」的アプローチしてみてください。そしてacitivityのA. に活動Bから「chosenkey」を送信し、その後、目的のエキストラを介してそれらを取得しようとすることができます。

これを取得しないと、私はより複雑なソリューションを用意しています。 :P

0

あなたがBからAを起動している場合、あなたはBが意図したものだけを得るでしょう。 CからAを起動している場合、Cが意図したものだけを取得します。

関連する問題