返回上一个活动而不丢失数据

时间:2012-09-03 12:01:36

标签: android android-intent android-activity flags start-activity

我有两项活动。活动A活动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); 

有什么想法吗? 谢谢你的帮助

5 个答案:

答案 0 :(得分:2)

你应该使用

startActivityForResult(Intent intent, int requestCode);

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

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

setResult();方法

并以回调方法onActivityResult()

获得返回结果的超级性

答案 1 :(得分:1)

您必须使用startActivityForResult方法

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

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

您可以在onActivityResult方法

上获得A活动的价值

答案 2 :(得分:0)

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

请查看startActivityForResult以获得您正在寻找的此行为。

答案 3 :(得分:0)

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

答案 4 :(得分:0)

您创建一个新的intent对象,通过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);
            }

} }