getIntExtra始终返回默认的当前帖子不起作用

时间:2014-05-27 17:16:22

标签: android android-intent

在活动SongDetails和MainActivity之间传递数据时,getIntExtra始终返回默认值。请参阅下面的代码。

第一项活动

Log.d("URL", "isIntentDriven = TRUE");
                    Intent intent = new Intent(SongDetails.this, MainActivity.class);
                    Log.d("URL", " " + sid);
                    intent.putExtra("sid", sid);
                    startActivity(intent);

                    finish();

第二项活动

private void getSIDIntent() {

    int sid = 0;

    Intent mIntent = getIntent();

    try {
        sid = mIntent.getIntExtra("sid", 0);
        Log.d("URL", "" + sid);
    } catch (Exception e) {

    } finally {
        if (sid > 0) {
            addSongDownload(sid);
        }
    }

    hideKeyboard();
}

更新 试过这个

SongDetails.java putExtra as still 0。

long sid;
intent.putExtra("sid", sid); 

Main.java

long sid = 0;
Intent mIntent = getIntent();
try {
sid = mIntent.getLongExtra("sid", 0);

1 个答案:

答案 0 :(得分:1)

如果MainActivity被定义为 singleTop singleTask ,则其getIntent()方法将不会指向您传递的新意图 - 它将返回"原文"意图。要阅读新意图,您实际上需要覆盖onNewIntent()

来自documentation

  

这是为将launchMode设置为" singleTop"在   他们的包,或者如果客户端使用FLAG_ACTIVITY_SINGLE_TOP标志   致电startActivity(Intent)时。在任何一种情况下,当活动   在活动堆栈的顶部而不是新的重新启动   正在启动的活动的实例,将调用onNewIntent()   在具有用于重新启动的Intent的现有实例上   它

     

请注意getIntent()仍会返回原始意图。您可以使用   setIntent(Intent)将其更新为此新Intent。