Исключение нулевого указателя при работе с намерениями - PullRequest
0 голосов
/ 30 марта 2012

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

Упражнение 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. Я почти уверен, чтоупустить что-то простое или что-то неправильно понять о намерениях, но я понятия не имею, что искать ...

Ответы [ 2 ]

0 голосов
/ 30 марта 2012

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

0 голосов
/ 30 марта 2012

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

Отправьте "songavekey" из действия C в действие B, а затем отправьте "selectedkey" из упражнения B в деятельность A. И затем попробуйте получить их с помощью дополнительных функций.* Если вы не получите это, у меня есть более сложное решение для вас.: P

...