1

我有两个活动。活动 A e 活动 B。

我在活动 A 中有带有数据的 editText。我传递给活动 B。

但是当我尝试将活动 B 传递给 A 时,活动 A 重新启动并且我丢失了 edittext 中的数据。如何使用 A 内的数据将 B 传递给 A?

这是我在活动 B 中的代码。但不起作用

       Intent afectarQuotaSocios = new Intent(B.this,A.class);
    afectarQuotaSocios.putExtra("ArrayListIdSocios",al);
    afectarQuotaSocios.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    startActivity(afectarQuotaSocios); 

有任何想法吗?谢谢你的帮助

4

5 回答 5

3

你应该使用

startActivityForResult(Intent intent, int requestCode);

开始一个子活动。就像你的情况一样,它的 B.

要将活动的结果返回到其超级活动,请调用

setResult();方法

并在回调方法中获得超活动的返回结果,onActivityResult()

于 2012-09-03T12:07:01.750 回答
1

您必须使用startActivityForResult方法

然后在您的 B 活动中,您可以传递您的结果:

resultIntent = new Intent(null);
resultIntent.putExtra(YOUR_CONSTANT_TEXT_IDENTIFIER, textValue);
setResult(Activity.RESULT_OK, resultIntent);
finish();

并且您在onActivityResult方法上获得 A Activity 的值

于 2012-09-03T12:07:59.253 回答
0

您正在启动一个新的 Activity,它将调用已启动的 Activity 的onCreate方法,然后重新开始。为了保持相同的状态,您想要做的是finish()从您的活动 B中调用。

看一下startActivityForResult以获得您正在寻找的这种行为。

于 2012-09-03T12:04:14.823 回答
0

在清单文件中,只需将此标签添加到 Activity A android:launchMode="singleInstance",不会为 Activity A 调用 onCreate,因此不会刷新您的数据。

于 2012-09-03T12:07:20.057 回答
0

您创建一个新的意图对象,通过 setResult(...) 方法调用将其传回。之后调用finish() 方法将控制权交还给父活动。

 Intent returnIntent = new Intent();
  returnIntent.putExtra("SELECTVALUE",book);
  setResult(RESULT_OK,returnIntent);        
  finish();
...

然后你回到你之前的活动。

protected void onActivityResult(int requestCode, int resultCode, Intent data)
  {
  switch(requestCode) {
  case BOOK_SELECT: 
        if (resultCode == RESULT_OK) {
            String name = data.getStringExtra("SELECTVALUE");
             System.out.println("Name"+name);
            }

} }

于 2012-09-03T12:39:28.400 回答