我正在尝试从传递给同一活动的两个不同活动中获取字符串数组。
活动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时会得到一个空指针异常。我很确定我错过了一些简单或误解某些意图的东西,但我还不知道该找什么......
答案 0 :(得分:0)
你的做法是错误的。您无法从两个不同的活动中启动相同的活动实例。所以当调用两个不同的意图时,你的onCreate会被调用两次。你可以尝试这种方法 -
从活动C向活动B发送“songsavekey” 然后将“selectedkey”从活动B发送到活动A. 然后尝试让他们通过意图附加。
如果你没有得到这个,我有一个更复杂的解决方案。 :P
答案 1 :(得分:0)
如果你从B发射A,你将只得到B放入意图中的内容。如果你从C中启动A,你将只获得C在意图中的含义。