我有三个活动 - A B和C,其中B是 Tab Activity 。 活动A首先启动,B从A启动。当使用此代码启动B时,我完成了活动A.
public void onStop() {
super.onStop();
this.finish();
}
现在我想在B中按下后退键时启动活动C.
我尝试使用此代码重写后退键
@Override
public void onBackPressed() { this.getParent().onBackPressed();
}
在启动子活动时完成父活动时,这不起作用。按回键时实际发生的事情是“活动”退出到主屏幕。
我尝试覆盖后退键并将Intent设置为
@Override
public void onBackPressed() {
Intent backIntent = new Intent();
backIntent.setClass(this, main.class);
startActivity(backIntent);
}
这对我没有帮助。 什么可能是这个问题的可能解决方案,如何在按下后退键时启动活动C?
答案 0 :(得分: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();
}
答案 1 :(得分: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));
答案 2 :(得分: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);
}