实现两个活动并在它们之间传递信息

时间:2011-12-07 11:58:49

标签: android android-activity

好的,首先请关注我,因为我对Android开发相对较新。

情况就是这样。我有一个记录数据的父(主)活动。让我们说,为简单起见,它包含一个编辑框。现在,子(子)活动包含一个当前为空的文本视图。默认情况下,当应用程序启动时,将启动主活动。现在,当用户在编辑框中输入他的名字并单击按钮时,我希望将该名称附加到第二个活动的文本视图中。然后,我可以切换到第二个活动并看到该更改。然后我点击后退按钮并输入另一个名字。当我再次切换到第二个活动时,我必须看到这种变化,等等。显然,这个场景不仅涉及编辑框和按钮,而且我认为这个想法是一样的。

所以实质上我想知道的是:

  1. 如何在活动之间切换并保持每个活动的数据。我必须在运行时创建这两个活动吗?
  2. 如何在这些活动之间传递数据?
  3. 当我在第二项活动开始时按下后退按钮时如何阻止该活动完全关闭?
  4. 感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

您可以使用Intents执行此操作。 这些基本上开始了其他活动,并且还有额外的好处,可以向他们添加额外的信息,可以在其他活动中检索。

在您的主要活动中,当您点击按钮时,请添加以下内容:

EditText edittext = (EditText) findViewById(R.id.editTextID);
Intent startSub = new Intent(this, SubActivity.class);
String input = edittext.getText().toString();
startSub.putExtra("name", input);
startActivity(startSub);

这会启动您的子活动。 现在在subActivity中,您可以在onCreate()方法中检索这些值,如下所示:

Bundle extras = getIntent().getExtras();
    // make sure there is actually extra data
    if (extras != null) {
        String theName = extras.getString("name");
        TextView text = (TextView) findViewById(R.id.yourTextView);
        text.setText(theName);
    }

当您返回并重新输入新名称时,将再次创建Intent,这意味着您的文本字段将再次更改。

祝你好运!

答案 1 :(得分:0)

你必须采取各种方法来做到这一点。您可以通过以下方式传递数据:

Intent intent = new Intent(this, ActivityB.class);
intent.putExtra("name", nameText);

另一种方法是使用可以通过整个应用程序访问的共享偏好。

如果您希望后退按钮不关闭您的活动,您需要覆盖backButtonPressed方法并再次启动activityA(使用intent标志不会一直启动新实例)。

至于保存活动状态请阅读:http://developer.android.com/guide/topics/fundamentals/activities.html#SavingActivityState