3

我有三个活动 - AB 和 C,其中 B 是Tab Activity。首先启动活动A,然后从A启动B。使用此代码启动B时,我完成了Activity A

public void onStop() {
   super.onStop();
   this.finish();
}

现在我想在 B 中按下返回键时启动 Activity C。

我尝试使用此代码覆盖返回键

@Override 
public void onBackPressed() { this.getParent().onBackPressed();
}

这无济于事,因为在启动子活动时父活动已完成。当我按下返回键时实际发生的是 Activity 退出到主屏幕。

我尝试覆盖后退键并为其设置 Intent

@Override
public void onBackPressed() {
    Intent backIntent = new Intent();
    backIntent.setClass(this, main.class);
    startActivity(backIntent);
}

这也对我没有帮助。这个问题的可能解决方案是什么,当按下返回键时如何启动 Activity C?

4

3 回答 3

5

首先,当活动 A 停止时,您不应该完成活动 A,这是完全错误的方法,而不是您必须在开始活动 B 时完成活动。

例如

Intent i = new Intent(this, B.class);
startActivity(i);
finish();

现在您想在用户按下后退按钮时启动活动 C,因此请使用以下代码。

@Override
public void onBackPressed() {
    Intent backIntent = new Intent(this, C.class);
    startActivity(backIntent);
    super.onBackPressed();
}
于 2012-05-04T04:39:02.013 回答
1

您必须覆盖 onKeyDown

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    // TODO Auto-generated method stub

    if (keyCode == event.KEYCODE_BACK)
    {
        //Do your code here
    }
    return super.onKeyDown(keyCode, event);
}
}

这将在用户按下设备硬返回按钮时调用。

导航到下一个活动: StartActivity(new Intent(getApplicationContext(),main.class));

于 2012-05-04T04:31:48.667 回答
0

覆盖以下方法并导入事件.....

public boolean onKeyDown(int keyCode, KeyEvent event) 
{
// TODO Auto-generated method stub

   if (keyCode == event.KEYCODE_BACK)
   {
      //Write your intent or other code here
   }
   return super.onKeyDown(keyCode, event);
}
于 2013-12-23T05:52:02.407 回答