【问题标题】:finish() not working as expected完成()没有按预期工作
【发布时间】:2017-01-06 08:12:54
【问题描述】:

当我创建一个 android 应用程序时,首先我创建了主要活动,然后我添加了启动活动以及一个正常活动。

所以我的问题是每当我在我的应用中点击退出时,它关闭主要活动并返回 飞溅活动中的一项正常活动。 我在主要活动中存在的退出按钮上使用 finish();

那么我怎样才能退出来到到android启动器屏幕的应用程序

我也尝试使用 Action Main 创建新意图,但它只是最小化应用程序我想关闭它

MainActivity.class

if (id == R.id.exit) {
            AlertDialog.Builder builder = new AlertDialog.Builder(homeActivity.this);
            builder.setMessage("Do You Want To Exit?").setCancelable(false)
                    .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            finish();
                        }
                    }).setNegativeButton("No", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    dialog.cancel();
                }
            });
            AlertDialog alert = builder.create();
            alert.setIcon(R.drawable.ic_error_outline_black_24dp);
            alert.setTitle("Exit!!");
            alert.show();
      }

【问题讨论】:

  • 当你从它开始主要活动时关闭你的启动活动。
  • 它正在发生,因为第一个活动仍在堆栈中
  • 此问题与您的 MainActivity 无关。在推送 MainActivity 时,需要完成 SplashScreen 并使用 @Trucket 指定的标签

标签: java android activity-finish


【解决方案1】:

当从SplashActivity 启动MainAcitivity 时,按如下意图设置标志并在SplashAcitivty 上调用finish()

Intent intent = new Intent(context, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
finish();

【讨论】:

    【解决方案2】:

    你可以设置android:excludeFromRecents="true"android:noHistory="true" 在你的 android Manifest 文件中用于启动活动。

    【讨论】:

      【解决方案3】:

      在您从SplashScreenActivity 启动MainActivity 时尝试添加标志"Intent.FLAG_ACTIVITY_CLEAR_TOP",如下所示:

      intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
      

      【讨论】:

      • 我试过了,但它没有按照我添加的方式工作Intent inst = new Intent(ipInfo.this,homeActivity.class); inst.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(inst);
      • 开始活动后我设置了finish(); 然后它按我的预期工作谢谢:)
      【解决方案4】:

      在将启动画面导航到 mainActivity 时将这些内容添加到启动画面中

      intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
      finish();
      

      【讨论】:

        猜你喜欢
        • 2021-10-19
        • 2020-03-18
        • 2012-06-14
        • 2014-11-15
        • 1970-01-01
        • 2012-07-02
        • 2011-09-07
        • 2013-03-03
        • 2015-05-18
        相关资源
        最近更新 更多