0

我有一个 5 活动

1 >> 2 >> 3 >> 4 >> 5

排名第一的活动是第一堂课。

数字 2 是我的列表数据类

数字 3 和 4 是我的输入数据类

5号是完成课

在活动编号 5 中,我将代码放入按钮以在完成后返回上一个

我有两个按钮返回上一个活动。

  1. 回到活动编号 2
  2. 回到活动编号 1

这是第 5 项活动的按钮

1)。

Intent intent = new Intent(getApplicationContext(), 2.class);
                intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
                startActivity(intent);

2)。

Intent dashboard = new Intent(getApplicationContext(), 1.class);
                dashboard.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                startActivity(dashboard);

编辑

一个。当我选择按钮编号2)。在第一个构建应用程序中,我单击并返回到第 1 个活动。当我点击后退按钮时,该活动不再显示 5 号活动并且它可以工作。

场景a : 1 >> 2>> 3 >> 4 >> 5 >> 1 >> 退出应用程序

。当我选择按钮编号2)。在第一个构建应用程序中,我尝试再次输入数据,最后在 5 号活动中,我选择了1 号按钮)。我单击并返回到第 2 项活动。当我点击后退按钮时,该活动不再显示 5 号活动并且它可以工作。

场景b: 1 >> 2 >> 3 >> 4 >> 5 >> 1 >> 2 >> 3 >> 4 >> 5 >> 2 >> 点击返回按钮 >> 1 >> 点击返回按钮 >> 退出应用程序

。但是当我选择按钮编号1)。在第一个构建应用程序中。我单击并返回到第 2 项活动。当我点击后退按钮时,它会再次显示上一个活动或活动编号 5。

场景c : 1 >> 2 >> 3 >> 4 >> 5 >> 2 >> 点击后退按钮 >> 5

d . 我想要我的按钮编号1)。当我在我的第一个构建应用程序中点击后退按钮时不显示上一个或活动号 5,或者如果没有我选择按钮号2,则不显示最后一个活动)。第一的。

方案d:1 >> 2 >> 3 >> 4 >> 5 >> 2 >> 点击返回按钮 >> 1 >> 退出应用

如何解决?

从昨天到现在的问题

对不起,我的英语不好。

编辑

在我的清单中我声明

1 号活动是 MainMenu.class 。

<activity
            android:name="hariff.ltis.mainmenu.MainMenu"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

2 号是 MainPetakTetap.class

<activity
            android:name="hariff.ltis.petaktetap.MainPetakTetap"
            android:label="@string/title_activity_main_petak_tetap" >
        </activity>

活动编号 3、4、5

<activity
            android:name="hariff.ltis.petaktetap.MainUpdate"
            android:label="@string/title_activity_main_petak_tetap" >
        </activity>

<activity
            android:name="hariff.ltis.petaktetap.UpdateLog"
            android:label="@string/title_activity_main_petak_tetap" >
        </activity>

<activity
            android:name="hariff.ltis.petaktetap.CPetakTempView"
            android:label="@string/title_activity_main_petak_tetap" >
        </activity>
4

2 回答 2

1

在我看来,系统杀死活动 2,因此 2 不再在堆栈中,因此它现在被重新创建并在 5 之上。因此,当你按下你将得到 5。一个解决方法(我不确定它会工作)如下

  1. 当从活动 3 开始活动 4 和从 4 开始活动 5 时,使用 startActivityForResult。

  2. 在活动 4

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent intent)
    {
        super.onActivityResult(requestCode, resultCode, intent);
    
        if (resultCode == RESULT_OK)
        {
             setResult(RESULT_OK);
             finish();
        }
    }  
    
  3. 在活动 3

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent intent)
    {
        super.onActivityResult(requestCode, resultCode, intent);
    
        if (resultCode == RESULT_OK)
        {
             new Intent(getApplicationContext(), 2.class);
            intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
            startActivity(intent);
             finish();
        }
    } 
    
  4. 在活动 5

    setResult(RESULT_OK);
    finish();
    
于 2013-04-04T07:28:55.970 回答
0

如果您要从任何活动返回到上次活动。

请使用finish()而不是创建新的Intent

在您的代码中,您正在为已经存在的活动创建新的 Intent。1.class这是错误的

Intent dashboard = new Intent(getApplicationContext(), 1.class);
                dashboard.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                startActivity(dashboard);

单击按钮执行此操作

finish();//这将完成您当前在堆栈中的活动。

并尝试使用thiscurrent activity name instead ofgetApplicationContext()`。

更新: 如果您想参加任何活动,只需使用StartActivityForResult()

于 2013-04-04T04:09:41.547 回答