使用setOnClickListener重新启动应用程序

时间:2017-10-01 15:00:03

标签: java android

我想用按钮重启我的应用,但它无法正常工作。 我有以下情况: 活动:A,B,C,D,E,F 我浏览以下活动:A > B > A > C > A > D > E > F

当我从A到B时,我使用startActivitie,当我从A到C时,我使用startActivityForResult

现在我想回到活动A,重新启动应用程序,但它无法正常工作。

这就是我在活动F:

上使用的内容
    back = (Button) findViewById(R.id.restart);

    back.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            intent = new Intent(getApplicationContext(), A.class);
            intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            intent.putExtra("EXIT", true);
            startActivity(intent);

        }
    });

这就是我在活动A上使用的内容:

if (getIntent().getBooleanExtra("EXIT", false)) {
        finish();
    }

问题是,当我点击按钮时,我会回到活动B。

我做错了什么? 感谢

2 个答案:

答案 0 :(得分:0)

在onClickListener onClick方法中,getApplicationContext()无需将其替换为:

intent = new Intent(F.this, A.class);

问题是此条件变为true

getIntent().getBooleanExtra("EXIT", false)

并致电

finish();

这意味着活动应该被销毁,所以如果你想要A继续按钮,请点击进入活动 F 意图将额外的false添加到此行:

更改

intent.putExtra("EXIT", true);

intent.putExtra("EXIT", false);

A会出现而没有完成。因为条件getIntent.getBooleanExtra("EXIT",false)现在是假的!

答案 1 :(得分:0)

查看FLAG_ACTIVITY_CLEAR_TOP的文档:

  

此启动模式也可以与FLAG_ACTIVITY_NEW_TASK结合使用:如果用于启动任务的根活动,它会将该任务的任何当前运行的实例带到前台,然后将其清除到其根目录州。

所以......添加.popup { position: relative; margin: 20 auto; padding: 5px; background: #fff; border-radius: 3px; width: 95%; position: relative; transition: all 2s ease-in-out; height: 280px; margin-left: auto; margin-right: auto; /*display: table;*/ margin-top: 10px;} 。您可能还必须覆盖FLAG_ACTIVITY_NEW_TASK,而不是仅仅依赖onNewIntent()

希望有所帮助!