在我的应用程序中有很多活动,如果用户在任何活动中按下后退按钮,它将进入最终活动,其中有按钮,用于评价此应用,反馈,Facebook等。当我从上一个活动按下按钮时,我可以返回上一个活动。同样在清单中我给了android:noHistory =" true"所有活动。
对于前。如果用户在A活动中,如果他按下后退按钮,如果他按下按钮,它将从那里进入最终活动,它应该返回到活动A.类似于其他活动。有可能吗?
我最后决定回到最后一个活动按下按钮时的第一个活动,我使用了以下代码。
Button first = (Button) findViewById(R.id.first);
first.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
startActivity(new Intent(last.this,first.class));
finish();
}
});
我删除了android:noHistory =" true"在第一项活动的清单中,它不断重复。
如何阻止这一点。我应该在哪里调用第一个活动中的finish()
答案 0 :(得分:0)
您可以在A活动之上启动最终活动,然后只需在其中调用finish()。
示例:
用户在' A'活动,他按下后退按钮(我假设你覆盖了onBackPressed方法)。 在那里你开始最后的活动,如果用户按下一个按钮,你只需调用finish(),用户就会被带回到A' A'活性。
答案 1 :(得分:0)
来自Android文档:
机器人:noHistory
当用户离开活动时,是否应该从活动堆栈中移除活动并完成活动(调用其finish()方法)并且它不再在屏幕上显示 - " true"如果它应该完成,并且" false"如果不。默认值为" false"。值" true"意味着活动不会留下历史痕迹。它不会保留在任务的活动堆栈中,因此用户将无法返回该任务。
正如你所提到的noHistory标签,没有由android& amp;一旦您离开他们开始最终活动
,活动就会完成一种解决方案是在启动最终活动时发送启动器活动名称。使用此信息,您可以在需要时启动启动器活动。
e.g
Intent it = new Intent(this,FinalActivity.class);
it.putExtra("launched_from",this.getClass().getSimpleName());
startActivity(it);
您可以像在此一样在FinalActivity中检索它
String launched_from = getIntent().getStringExtra("launched_from");
现在你知道它发起了哪个活动。
答案 2 :(得分:0)
我认为您在启动FinalActivity时调用MainActivity中的finish()
noHistory = "true"
应该为您提供解决方案,但您可以通过在MainActivity中启动新活动后立即调用finish()
来获得类似的行为。但是,noHistory最终会更易于维护,因为如果稍后再向mainActivity添加另一个startActivity()调用,您最终可能会忘记包含finish()
调用。