我从活动A开始,它包含两个按钮,分别带您进入活动B和C.在活动B或C中,有一个计时器:一旦计时器到期,您将通过以下代码返回活动A:
Intent intent = new Intent();
intent.setClass(B_or_C.this, A.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
getApplicationContext().startActivity(intent);
然而,一旦我回到活动A,就会发生一些奇怪的事情。点击B按钮会将我带到活动C,反之亦然,但只是偶尔。有时点击按钮会使我进入正确的活动,有时却没有。我已经尝试使用onClickListeners和onClick(视图视图)作为设置的方式,当按下按钮时会发生什么,但在这两种情况下,运行上面的代码后,有可能点击按钮将我带到错误的活动。
有没有办法明确设置按下按钮时会发生什么?
编辑:尝试将final
修饰符添加到onClick方法中,即便如此,有时点击按钮B会让我进入活动C.我不明白为什么会发生这种情况,按钮B的onClick方法包含只有以下内容:
public final void onClickB(View view){
Intent intent = new Intent(this, B.class);
startActivity(intent);
}
为什么点击这个按钮会把我带到C.class,它呢?
答案 0 :(得分:0)
在第一种情况下,为什么不以标准方式创建意图,而且,我认为您想使用FLAG_ACTIVITY_CLEAR_TOP而不是FLAG_ACTIVITY_NEW_TASK:
Intent intent = new Intent(B_or_C.this, A.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
getApplicationContext().startActivity(intent);
//quit current activity
finish();
此外,在两种情况下,在开始完成当前活动的意图后添加finish(),例如:
public final void onClickB(View view){
Intent intent = new Intent(this, B.class);
startActivity(intent);
//add finish() to quit current activity
finish();
}
此外,您可以考虑将按钮B或C点击操作与onBackPressed()相关联,这样您就可以依靠Android来转到之前的活动。
阅读有关任务和后台堆栈的文档here
答案 1 :(得分:0)
执行此操作而不是重新启动活动
Intent returnIntent = new Intent();
returnIntent.putExtra("result",result);
setResult(RESULT_OK,returnIntent);
finish();