3

在我的 Android 应用程序中,流程如下所示:主页 -> Page1 -> page2 -> page3。在第 1 页、第 2 页和第 3 页中,有主页按钮,当单击主页按钮时,它应该启动主页(MainActivity)。这里 MainActivity 类从服务器获取 JSON 数据。

现在我的问题是:当我在第 1、第 2 或第 3 页时,如果我点击主页按钮,它应该转到 MainACtivity。同时,当我在第 2 页时,如果我点击设备返回按钮,它应该转到第 1 页。同样,如果我在第 3 页,如果我单击设备后退按钮,它应该转到第 2 页。

为此,我常用的解决方案是,

//In Page1 Activity, Under Home button OnClickListner:
Intent in = new Intent(Page1.this,MainActivity.Class);
StartActivity(in); 

这样,每次 MainActivity 类加载并与服务器通信时,都会导致应用程序的性能降低。

我尝试的另一种方法,即

//In Page1 Activity, Under Home button OnClickListner
finish();

这适用于 page1。如果我在 Page2 中使用 finish(),它会启动 page1 活动。或者我使用了一些这样的:

//In Page1 Activity:
Intent in = new Intent(Page1.this,Page2.Class);
startActivity(in);
finish();

并且,在 Page2 中,在 Home Button OnClickListener 下,我编写了 finish()。有了这个,当我在 Page2 中时,如果我点击 Home 按钮,它将启动 MainActivity。同时,如果我点击设备的后退按钮,它正在启动 MainActivity。它必须转到第 1 页。

拜托,有人可以给我建议一下我需要用什么来做这套衣服。

谢谢你们。

4

5 回答 5

5

您应该在子活动的意图中设置一个标志。

Intent i = new Intent(Page3.this, MainActivity.class); i.setFlags(FLAG_ACTIVITY_CLEAR_TOP); startActivity(i);

http://developer.android.com/guide/components/tasks-and-back-stack.html,了解更多信息。

于 2014-11-13T16:48:45.127 回答
1

在像这样开始活动之前,请尝试在您的意图中添加一个标志。

Intent mIntent = new Intent(Present_Activity.this, Next_Activity.class)
                        .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_CLEAR_TASK);

已编辑

并在您调用完成之前的主要活动中调用方法:

moveTaskToBack(true);
于 2013-08-19T09:48:15.960 回答
1

使用此代码:

OnClick所有页面的 Home 按钮中,这样写:

Intent in = new Intent(Page1.this,MainActivity.Class);
startActivity(in);
finish();

onBackPressed第 1 页中,写:

Intent in = new Intent(Page1.this,MainActivity.Class);
startActivity(in);
finish();

onBackPressed第 2 页中,写:

Intent in = new Intent(Page2.this,Page1.Class);
startActivity(in);
finish();

onBackPressed第 3 页中,写:

Intent in = new Intent(Page3.this,Page2.Class);
startActivity(in);
finish();
于 2013-08-19T09:48:20.563 回答
0

查看文档,您可以 android:parentActivityName在声明任何activity.

例子:

<activity
        android:name="com.example.Page2"
        android:parentActivityName="com.example.MainActivity" >
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="com.example.MainActivity" />
    </activity>

您不需要开始MainActivity使用。Intent它会在执行时处理调用 ParentActivity onBackPressed

如果需要添加SupportLibrary,可以从这里下载。

编辑 :

您应该Activity Lifecycle按照此处所述进行管理。

InsideMainActivityonCreate方法,启动执行AsyncTask从服务器加载数据的执行。

并且当您从 移回时Page2onResumeofMainActivity将被调用。因此您的数据将不会再次从服务器加载。

我希望它会有所帮助!

于 2013-08-19T09:54:38.903 回答
0

不知何故,我得到了适合我的解决方案。在第 2 页上,主页按钮 SetonClickListener 编写了如下代码:

Intent in = new Intent(Page2.this,MainActivity.class);
startActivity(in);

在 Manifest 文件下:对于 Main Activity 使用过这样的

android:launchMode="singleTask" 

这样,每次单击主页按钮都会启动实例 MainActivity 但不与服务器通信。

于 2013-08-19T10:44:06.100 回答