Android 返回到以前的活动而不丢失数据

Android 返回到以前的活动而不丢失数据,android,android-intent,android-activity,flags,start-activity,Android,Android Intent,Android Activity,Flags,Start Activity,我有两项活动。活动A e活动B 我有活动A中包含数据的editText。我传递到活动B 但当我试图将活动B传递给活动A时,活动A会重新启动,并且我会丢失edittext中的数据。如何将B的数据传递给A,并在A中包含数据 这是我在活动B中的代码,但不起作用 Intent afectarQuotaSocios = new Intent(B.this,A.class); afectarQuotaSocios.putExtra("ArrayListIdSocios",al);

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

我有活动A中包含数据的editText。我传递到活动B

但当我试图将活动B传递给活动A时,活动A会重新启动,并且我会丢失edittext中的数据。如何将B的数据传递给A,并在A中包含数据

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

       Intent afectarQuotaSocios = new Intent(B.this,A.class);
    afectarQuotaSocios.putExtra("ArrayListIdSocios",al);
    afectarQuotaSocios.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    startActivity(afectarQuotaSocios); 
有什么想法吗?
感谢您的帮助

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


查看一下,以获得您正在寻找的此行为。

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

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

您应该使用

startActivityForResult(Intent intent, int requestCode);
启动子活动。就像你的情况一样,是B

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

setResult()方法

并在superactivity中获取返回的结果,在回调方法中,
onActivityResult()

您应该使用

startActivityForResult(Intent intent, int requestCode);
启动子活动。就像你的情况一样,是B

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

setResult()方法


并在superactivity中获取返回结果,在回调方法中,清单文件中的onActivityResult()

只需将此标记添加到活动A
android:launchMode=“singleInstance”
活动A不会调用onCreate,因此您的数据不会被刷新。

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

您必须使用该方法

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

resultIntent = new Intent(null);
resultIntent.putExtra(YOUR_CONSTANT_TEXT_IDENTIFIER, textValue);
setResult(Activity.RESULT_OK, resultIntent);
finish();
然后你就可以在方法上获得你的A活动的值了

你必须使用这个方法

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

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

然后在方法上获取活动的值

创建一个新的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);
            }
}
}

创建一个新的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);
            }
}
}

但同时我需要将数据(arrayList al)从活动B传递到活动A,要做到这一点,我需要intent…..但同时我需要将数据(arrayList al)从活动B传递到活动A,要做到这一点,我需要intent…..您的
OnCreate()
被调用一次(当应用程序启动时),然后您的
NewIntent()
方法被调用用于代码的其余部分,您可以在其中重新加载数据。您的
OnCreate()
被调用一次(当app.启动时),然后您的
NewIntent()
方法被调用用于代码的其余部分,您可以在其中重新加载数据。Hello jeet。谢谢你的回复。如果需要返回到活动B,我需要在不更改的情况下保留内部的listview?你的解决方案很好,谢谢。但是我需要把它用到A和B中。我怎么能做到这一点呢?编写代码,在onCreate方法中保持不变,在onStart或onRestart方法中从活动返回时更新代码。你好,jeet。谢谢你的回复。如果需要返回到活动B,我需要在不更改的情况下保留内部的listview?你的解决方案很好,谢谢。但我需要将其用于A和B。我如何才能做到这一点?编写代码,希望在onCreate方法中保持不变,并希望在onStart或onRestart方法中从活动返回时更新这些代码。