按钮方法似乎被覆盖了?

时间:2013-12-06 16:30:18

标签: android button android-activity

我从活动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,它呢?

2 个答案:

答案 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)

您的活动B或C中的

执行此操作而不是重新启动活动

 Intent returnIntent = new Intent();
 returnIntent.putExtra("result",result);
 setResult(RESULT_OK,returnIntent);     
 finish();