Android 返回到以前的活动而不丢失数据
我有两项活动。活动A e活动B 我有活动A中包含数据的editText。我传递到活动B 但当我试图将活动B传递给活动A时,活动A会重新启动,并且我会丢失edittext中的数据。如何将B的数据传递给A,并在A中包含数据 这是我在活动B中的代码,但不起作用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);
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()
只需将此标记添加到活动Aandroid:launchMode=“singleInstance”
活动A不会调用onCreate,因此您的数据不会被刷新。在清单文件中,只需将此标记添加到活动Aandroid: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方法中从活动返回时更新这些代码。