【发布时间】:2020-05-27 11:27:14
【问题描述】:
我有 3 个活动(A、B、C),其中 2 个与意图通信。
这是调用顺序:A -> B -> C。
在活动 B 中,我使用intent.putExtra("key", gameMode) 启动活动 C。
首次启动活动C时,没有问题。但是如果 C 结束并且我回到 B 并更改 game_mode,则活动 C 总是读取第一个意图。
我知道这个问题会被问很多次,但是即使我尝试使用onNewIntent()(内部使用setIntent(intent)),或者甚至使用FLAG_ACTIVITY_CLEAR_TOP,它也不会改变任何东西......
我想(我确定......)我是做错一切的人,但我正在寻求您的帮助以获得完整而清晰的答案。
目标是更新意图(或至少更新其附加内容)。我应该调用 onNewIntent() 方法,还是 Android 自己做?等等
非常感谢花时间回答我问题的人。
B 活动:
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
setIntent(intent);
}
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MenuPrincipal.this, GameCard.class);
intent.putExtra("key", gameMode);
onNewIntent(intent);
startActivity(intent);
}
});
C 活动:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.some_layout);
int gameMode;
Bundle extras = getIntent().getExtras();
if(extras != null) {
gameMode = extras.getInt("key", 0);
}
}
@Override
public void onBackPressed() {
// do nothing.
//default value : super.onBackPressed();
}
【问题讨论】:
-
putExtra()中的关键字int需要什么?
-
无它是为了表明它是一个整数。我把它删除了。
-
你能给我onBackPressed()的活动C
-
extras.getInt("key");试试这个而不是 extras.getInt("key", 0);
标签: android android-studio android-intent android-activity