我想用按钮重启我的应用,但它无法正常工作。
我有以下情况:
活动: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。
我做错了什么? 感谢
答案 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()
。
希望有所帮助!