如何管理后台堆栈并正确导航

时间:2015-04-27 11:32:36

标签: android android-activity back-stack

我在应用程序中有3个活动,比如A,B和C. 从A我可以导航到B或C.所以可能的工作流程有两种方式:

  1. A> > B>> C(取得输入,然后在B中选择的公式开始计算)

  2. A>> c取代;> B和选择公式后,它回到了C

  3. 问题

    现在在案例1中。如果用户导航显示的路径,A> B> CI希望用户以与B的背压相同的方式导航回来,他应该转到C然后转到A:

    但是在第二种情况下我希望用户应该从C转到A,我的意思是当用户回按时,在C中打开B不应该导航到B.换句话说,如果用户使用我的第二个案例进行导航,他应该来到A而不是C。

    我在这种情况下如何处理这个问题。

4 个答案:

答案 0 :(得分:0)

基本上不要在你的活动中覆盖背压,让android为你处理活动。

在First Usecase中:当您从MainActivity导航时 - > ActivityFormula - > ActivityMath。在这里,当您按下时,序列将是提取反转

在第二个用例中:当您从MainActivity - > ActivityMath导航时,不要将ActivityFormula保留在堆栈中,因此后面的内容不会转到ActivityFormula。

答案 1 :(得分:0)

@case 1,如果您自己没有关闭A和B,它将按您的意愿工作。不要覆盖任何事情。

@case 2,你可以在启动时简单地finish() C.在ActivityC中写下以下代码:

Intent intent = new Intent(this, ActivityB.class);
startActivity(intent);
finish();

答案 2 :(得分:0)

第一个用例:来自ActivityA - > ActivityB - > ActivityC的意图。在这里,当您按下时,序列将是提取反转

第二个用例:当nevigate ActivityA - > ActivityC时,导航' finish();' - >&#时使用ActivityC 39; ActivityB'

并使用

ActivityB IntentActivityA
 @Override
    public void onBackPressed() {
        Intent i = new Intent(ActivityC.this , ActivityB.class);
        startActivity(i);
         finish(); 
    }

让我知道..如果还没有得到解决方案

答案 3 :(得分:0)

这是标准的Android行为。按BACK按钮(或调用Activity)将使用户返回堆栈中的上一个 <h:messages id="msg1" layout="table" globalOnly="true" showDetail="true" showSummary="false"/> 。你不必做任何特殊的事情来获得这种行为。默认情况下,它的工作方式如下。