从Android中的儿童活动返回MainActivity



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

现在我的问题是:当我在第1页、第2页或第3页时,如果我点击主页按钮,它应该转到MainACctivity。类似地,如果我在第3页,如果我点击设备后退按钮,它应该会转到第2页。

为此,我使用的通常的解决方案,如

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

这样,每当MainActivity类得到load&与服务器通信,导致应用程序性能低下。

我尝试的另一种方法,即

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

这适用于第1页。如果我在Page2中使用finish(),它将启动page1活动。或者,我用了一些类似的东西:

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

在第2页中,在主页按钮OnClickListener下,我写了finish()。这样,当我在第二页时,如果我点击主页按钮,它将启动MainActivity。同时,如果我点击设备的后退按钮,它正在启动MainActivity。必须转到第1页。

拜托,有人能告诉我这次自杀需要用什么吗。

谢谢大家。

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

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,了解更多信息。

使用此代码:

在所有页面的主页按钮的OnClick中,写下:

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

在第1页的onBackPressed中,写入:

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

在第2页的onBackPressed中,写入:

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

在第3页的onBackPressed中,写入:

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

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

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

已编辑

在调用finish之前,在您的主活动中调用方法:

moveTaskToBack(true);

不知怎么的,我找到了自杀的解决方案。。在Page2上,主页按钮SetonClickListener编写了如下代码:

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

在清单文件下:对于主要活动,已使用类似

android:launchMode="singleTask" 

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

看看文档,您可以在声明任何activity时使用清单文件中的android:parentActivityName属性。

示例:

<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>

您不需要使用Intent启动MainActivity。它将处理在执行onBackPressed时调用ParentActivity。

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

编辑:

您应该像这里提到的那样管理Activity Lifecycle

MainActivityonCreate方法中,启动执行AsyncTask以从服务器加载数据。

当您从Page2移回时,将调用MainActivityonResume。因此您的数据将不会再次从服务器加载。

我希望它会有所帮助!!

最新更新