在活动中调用其他活动?

时间:2010-05-08 12:53:11

标签: java android android-activity

说我有2个活动(ActivityOne和ActivityTwo)。我如何从ActivityOne调用ActivityTwo?那么我将如何从ActivityTwo返回ActivityOne?例如,我有一个列表视图,其中包含主机上的所有联系人。当我点击联系人时,另一个活动会显示信息并允许编辑该联系人。然后我可以点击后退按钮,在调用ActivityTwo之前我会回到ActivityOne所处的确切状态。我在想一个Intent对象,但我不确定。有人可以发布一些代码吗?

2 个答案:

答案 0 :(得分:3)

在您的第一个活动(AcitvityOne)中,您可以致电

Intent intent = new Intent(this, ActivityTwo.class);
startActivityForResult(intent, CODE);

然后你可以覆盖

public void onActivityResult(int reqCode, int resultCode, Intent data) {

接收此活动的结果

答案 1 :(得分:3)

在您的示例中,您似乎想要在Activity One和Activity Two之间传递数据(即您要编辑的联系人的引用),因此您应该在Activity One中使用Bundle。 / p>

    Intent myIntent = new Intent(this, ActivityTwo.class);
    myIntent.putExtra("CONTACT", position);
    this.startActivity(myIntent);

“CONTACT”是一个键,位置是一个值(之前定义的位置,它可能是你想要的任何东西,例如一个整数。你检索它的方式根据它的类型略有不同是,请注意下面活动二代码中的getInt()。

在活动二中,在onCreate()

Bundle extras = getIntent().getExtras();
    if (extras != null) {
        contact = extras.getInt("CONTACT");
        /**Do what you want with the integer value you have retrieved**/
    }

至于你的另一个问题,后退按钮会从任务堆栈的顶部删除当前的Activity,因此,你会返回上一个Activity,通常与你离开时的状态完全相同。

但是,如果手机内存不足,Android可能会终止进程或活动,因此从理论上讲,您之前的Activity可能不会显示与您离开时完全相同的状态。如果您有任何重要数据,则应在启动活动二之前保存它。如果您只是想以相同的状态返回Activity One以获得用户友好性,那么依靠后退按钮就可以了。