在活动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);
答案 0 :(得分:1)
如果MainActivity
被定义为 singleTop 或 singleTask ,则其getIntent()
方法将不会指向您传递的新意图 - 它将返回"原文"意图。要阅读新意图,您实际上需要覆盖onNewIntent()
。
这是为将launchMode设置为" singleTop"在 他们的包,或者如果客户端使用
FLAG_ACTIVITY_SINGLE_TOP
标志 致电startActivity(Intent)
时。在任何一种情况下,当活动 在活动堆栈的顶部而不是新的重新启动 正在启动的活动的实例,将调用onNewIntent()
在具有用于重新启动的Intent的现有实例上 它请注意
getIntent()
仍会返回原始意图。您可以使用setIntent(Intent)
将其更新为此新Intent。