2012-03-30 4 views
0

Я пытаюсь получить строковые массивы из двух разных видов деятельности, переданных в один и тот же вид деятельности.Исключительное исключение указателя при работе с намерениями

активность 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); 
     } 
    }); 

я могу получить каждый массив по отдельности, если я закомментировать другой, но когда они» re together Я получаю исключение null-указателя при запуске действия A. Я уверен, что мне не хватает чего-то простого или неправильного что-то о намерениях, но я не знаю, что искать ...

ответ

0

Ваш подход ошибочен. Вы не можете запустить один и тот же экземпляр активности из двух разных действий. Поэтому ваш onCreate будет вызываться дважды, когда вызывается два разных намерения. Вы можете попробовать это приступающим

Отправить «songsavekey» от активности С до активности В А затем отправить «chosenkey» от активности В к А. актив- ности, а затем попытаться получить их через намерение статистов.

Если вы этого не сделаете, у меня есть более сложное решение для вас. : P

0

Если вы запускаете A из B, вы получите только то, что B положил в намерении. Если вы запускаете A с C, вы получите только то, что C положите в намерение.

Смежные вопросы