我在Android应用程序中有3个活动。当我在每个活动中按下后退按钮时,应用程序将退出。使用以下代码。
当我从第三个活动按回来时,应用程序退出正常,但是当我通过单击应用程序图标重新启动应用程序时,第三个活动将再次启动。但是我需要在这种“重新启动”时启动我的主要活动。
我尝试在“onResume”上编写代码,但没有工作。
@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{
if (keyCode == KeyEvent.KEYCODE_BACK)
{
moveTaskToBack(true);
return true;
}
return super.onKeyDown(keyCode, event);
}
请帮帮我。提前致谢
答案 0 :(得分:2)
您可以使用以下方法解决此问题 在你的第三个Activity类中放入以下代码,
@Override
public void onBackPressed() {
// TODO Auto-generated method stub
super.onBackPressed();
startActivity(new Intent(getBaseContext(), YourSecondActivity.class));
finish();
}
同样的方法你可以放入第二个Activity Class
@Override
public void onBackPressed() {
// TODO Auto-generated method stub
super.onBackPressed();
startActivity(new Intent(getBaseContext(), YourFirstActivity.class));
finish();
}
最后你可以将它放在你的主类
中 @Override
public void onBackPressed() {
// TODO Auto-generated method stub
super.onBackPressed();
finish();
}
答案 1 :(得分:1)
在活动A中 - 调用startActivity(B)时,也调用finish()。示例 -
public void onButtonClick() // Some method
{
startActivity(intentForB);
finish();
}
同样从B -
转到C时 public void onButtonClick()
{
startActivity(intentForC);
finish();
}
当用户在活动C上,当他按下后退按钮时,应用程序将关闭。(无需明确写回按钮处理)。
希望这有帮助。
答案 2 :(得分:0)
moveTaskToBack()
将包含此活动的任务移动到活动堆栈的后面。
在OnBackpressed()
中执行,并在所有活动中使用finish()
。 (因为你说当你按下按钮时你想完成所有的活动)
public void OnBackpressed()
{
finish();
}
简单地说,在您的代码中这样做:
在activity 1
Intent intent=new Intent(activity1.this,activity2.class);
startActivity(intent);
finish();
在activity 2
Intent intent=new Intent(activity2.this,activity3.class);
startActivity(intent);
finish();
如果您在前两个活动中使用了此项,则在第三个活动中无需处理OnBackpressed()
。因为当活动检测到用户按下后退键时会调用OnBackpressed()
。默认实现只是完成当前活动,但您可以覆盖它以执行任何操作。
答案 3 :(得分:0)
在AndroidManifest.xml中使用此代码,在首次启动活动中使用 android:clearTaskOnLaunch =“true”。
<activity
android:name="com.example.package.SplashActivity"
android:label="@string/app_name"
android:clearTaskOnLaunch="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
如果您想使用关键事件,请在您的活动中使用此代码:
@Override
public boolean dispatchKeyEvent(KeyEvent event)
{
boolean result = false;
switch(event.getKeyCode())
{
case KeyEvent.KEYCODE_BACK:
finish(); // or moveTaskToBack(true);
result = true;
break;
default:
result= super.dispatchKeyEvent(event);
break;
}
return result;
}
答案 4 :(得分:0)
如果要退出所有3个活动,则必须在开始新活动时使用finish()
关闭当前活动。
答案 5 :(得分:0)
在首次发布活动中,在AndroidManifest.xml和android:launchMode =“singleTop”中使用此代码。