处理意图时出现空指针异常

时间:2012-03-30 15:35:31

标签: android android-intent nullpointerexception

我正在尝试从传递给同一活动的两个不同活动中获取字符串数组。

活动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 :(得分:0)

你的做法是错误的。您无法从两个不同的活动中启动相同的活动实例。所以当调用两个不同的意图时,你的onCreate会被调用两次。你可以尝试这种方法 -

从活动C向活动B发送“songsavekey” 然后将“selectedkey”从活动B发送到活动A. 然后尝试让他们通过意图附加。

如果你没有得到这个,我有一个更复杂的解决方案。 :P

答案 1 :(得分:0)

如果你从B发射A,你将只得到B放入意图中的内容。如果你从C中启动A,你将只获得C在意图中的含义。