25

我有 4 个活动,比如Act1、和。Act1 中的按钮打开 Act2,Act2 中的按钮打开 Act3,Act3 中的按钮打开 Act4。Act2Act3Act4

我想做两件事:

  1. 我在 Act4 中有一个按钮,可将用户引导至 Act1,问题是当用户在 Act1 中单击返回时,我想关闭应用程序而不是打开 Act4 ..

  2. 当用户选择它时,我在所有活动中的菜单“退出”中都有选项,我想关闭应用程序而不是返回到以前的活动。

尝试使用finish();,但它不符合我的要求。

4

12 回答 12

40

Act4在您的 'thMenu.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();
}

这将退出您的应用程序。

于 2012-06-18T10:53:31.510 回答
10

看看这个链接:

点击这里

您可以使用 :

@Override
public void onBackPressed()
{
     moveTaskToBack(true);
}

在所有活动中关闭应用程序。

于 2012-06-18T10:49:12.253 回答
5
Intent intent = new Intent(Act4.this, Act1.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);

在切换回之前的活动之前清除标志。它可能会帮助你。

于 2016-12-27T08:52:58.767 回答
3

当您转到下一个活动时完成上一个活动意味着在第四个活动的按钮单击事件开始第一个活动finish();之后编写并编写以下代码。startactivity(intent);

Intent in1=new Intent(Act4.this, Act1.class);
startActivity(in1);
finish();

并在所有活动中的退出按钮的 Click 事件上编写以下代码。

finish();
于 2012-06-18T11:34:04.683 回答
3

将此代码放在您的应用程序中:

moveTaskToBack(true);
android.os.Process.killProcess(Process.myPid());
System.exit(1);
于 2017-10-13T12:12:36.903 回答
1

android:noHistory = "true"在您的 AndroidManifest.xml 文件中使用

    <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" />
于 2017-07-27T06:17:15.120 回答
0

我使用的方法是使用startActivityForResult. 然后我可以 putExtra("STATE", some_value) 退出任何孩子并使用状态值来确定通过父母做什么。

如果我想从深层子级退出应用程序,“STATE”将是“exit”,层次结构中的每个子级将简单地获取 StringExtra 用于“exit”,执行 putExtra("STATE", "exit") 并调用finish() 然后应用程序最后会调用 finish() 。您可以使用它来实现任何所需的状态。

使用 startActivityForResult 以这种方式传递消息避免了将笨拙的引用向下传递到子活动中,并简化了设置应用程序所需状态的方法。

于 2013-12-24T15:52:06.260 回答
0

如果您有另一个活动(在应用程序活动堆栈中),您可以使用finish()退出当前活动。

但是,back 函数也假设从您的应用程序活动堆栈中删除当前活动。

以我的经验,依赖后栈中的活动(在应用程序活动栈中)是非常不可靠的。因此,当我深入时,我曾经退出每个活动。

在你的情况下:

Act 1 -> exit -> Act 2 -> exit -> Act 3 -> exit -> Act 4 -> exit -> Act 1 -> exit 

上述方法将退出所有活动。

但是,如果你想在后台运行一些代码,最好依赖“服务”而不是“活动”。您可以在完成分配的工作后让“服务”退出。

于 2014-06-05T02:18:35.053 回答
0

我使用这种方法:
1. 在第一个活动中创建静态活动,该活动将关闭其余活动。
2.然后像这样在静态方法中调用它,它会从你调用它的任何地方关闭应用程序。

public static Activity activity;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    activity=this;
}
public static void CloseApp(){
    activity.finish();
} 
于 2017-05-17T17:36:19.863 回答
0
Do a 
<code>

try
{
finalize();
finish
}
catch(Exception error)
{
error.printStackTrace();
}
//This would exit your App neatly
</code>
于 2015-11-18T09:41:01.633 回答
-1

托盘这个

Intent intent =new Intent(MainActivity.this, ClassName.class);
  finish
startActivity(intent);
于 2016-08-13T19:59:52.237 回答
-1

开始使用Activity1意图并尝试调用finishAffinity().onBackPressed()Activity1

于 2016-08-14T06:29:27.457 回答