我有4个活动说Act1
,Act2
,Act3
和Act4
。
Act1中的按钮打开Act2,Act2中的按钮打开Act3,Act3中的按钮打开Act4。
我想要做两件事:
我在Act4中有一个按钮,用户指向Act1,问题是当用户点击Act1时,我想关闭应用而不是打开Act4 ..
当用户选择菜单时,我在所有活动的菜单'退出'中都有选项,我想关闭应用而不是回到之前的活动。
尝试使用finish();
,但不符合我的要求。
答案 0 :(得分:31)
在Act4
'Menu.xml
的退出按钮 -
Intent intent = new Intent(Act4.this, Act1.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.putExtra("EXIT", true);
startActivity(intent);
并且,在您的第一个活动的onCreate()
方法中,只需输入以下代码 -
if (getIntent().getBooleanExtra("EXIT", false))
{
finish();
}
这将退出您的应用。
答案 1 :(得分:8)
点击此链接:
您可以使用:
@Override
public void onBackPressed()
{
moveTaskToBack(true);
}
在关闭应用的所有活动中。
答案 2 :(得分:3)
Intent intent = new Intent(Act4.this, Act1.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
在切换回上一个活动之前清除该标志。它可能会对你有帮助。
答案 3 :(得分:2)
当您转到下一个活动时完成上一个活动意味着在finish();
之后写startactivity(intent);
并在下面写下代码,以便从第四个活动的按钮点击事件开始第一个活动。
Intent in1=new Intent(Act4.this, Act1.class);
startActivity(in1);
finish();
并在所有活动中的Exit按钮的Click事件中写下以下代码。
finish();
答案 4 :(得分:1)
将此代码放入您的应用中:
moveTaskToBack(true);
android.os.Process.killProcess(Process.myPid());
System.exit(1);
答案 5 :(得分:0)
我使用的方法是使用startActivityForResult
启动所有子活动。然后我可以在退出任何一个孩子时放入Extra(“STATE”,some_value)并使用状态值来确定通过父母做什么。
如果我想从深度子项退出应用程序,“STATE”将是“退出”,并且层次结构中的每个子项只需获取“退出”的StringExtra,执行putExtra(“STATE”,“exit”) )并调用finish()然后应用程序最终会调用finish()。您可以使用它来实现任何所需的状态。
使用startActivityForResult以这种方式传递消息可以避免将笨拙的引用传递给子活动,并简化设置应用程序所需状态的方法。
答案 6 :(得分:0)
如果您有其他活动(在应用程序活动堆栈中),
您可以使用finish()
退出当前活动。
但是,back函数也假设从应用程序活动堆栈中删除当前活动。
根据我的经验,依赖后台堆栈中的活动(在应用程序活动堆栈中)是非常不可靠的。因此,当我走得更远时,我常常退出每个活动。
在你的情况下:
Act 1 -> exit -> Act 2 -> exit -> Act 3 -> exit -> Act 4 -> exit -> Act 1 -> exit
上述方法将退出所有活动。
但是,如果你想在后台运行一些代码,最好依靠"服务"而不是"活动"。你可以让"服务"在完成指定工作后退出。
答案 7 :(得分:0)
<div ng-controller="MainCtrl">
<progressbar ng-show="data.progress < 100" value="data.progress" class="progress-striped active" animate="true" max="100"></progressbar>
<button ng-click="test()">test</button>
答案 8 :(得分:0)
我使用这种方法:
1.在将关闭的第一个活动中创建静态活动
剩余活动。
2.然后在这样的静态方法中调用它,它将从你调用它的任何地方关闭应用程序。
public static Activity activity;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
activity=this;
}
public static void CloseApp(){
activity.finish();
}
答案 9 :(得分:0)
在AndroidManifest.xml文件中使用android:noHistory = "true"
<activity
android:name=".Act1"
android:noHistory="true" />
<activity
android:name=".Act2"
android:noHistory="true" />
<activity
android:name=".Act3"
android:noHistory="true" />
<activity
android:name=".Act4"
android:noHistory="true" />
答案 10 :(得分:-1)
托盘这个
Intent intent =new Intent(MainActivity.this, ClassName.class);
finish
startActivity(intent);
答案 11 :(得分:-1)
使用意图启动Activity1
并尝试拨打finishAffinity()
onBackPressed()
中的Activity1
。