Android - 如何返回上一个活动?

时间:2014-11-05 17:32:03

标签: android android-activity

在我的应用程序中有很多活动,如果用户在任何活动中按下后退按钮,它将进入最终活动,其中有按钮,用于评价此应用,反馈,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()

3 个答案:

答案 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()调用。