0

我有两个活动。活动A E活动B.返回到上一个灵活性,而不会丢失数据

我有EDITTEXT与活动A.内部的数据我传递给活动B.

但是,当我试图通过活动B到A,活动重新启动,我失去的EditText数据。我怎样才能把B中的数据传给A?

这是我在活动B.代码,但不工作

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

任何想法? 感谢您的帮助

回答

2

您应该使用

startActivityForResult(Intent intent, int requestCode); 

启动子活动。像你的情况下,其B.

从活动到其超强的活动返回结果,称

setResult();方法

和超活性得到返回的结果,在回调方法,onActivityResult()

+0

您好截拳道。感谢您的回复。如果需要返回到活动B,并且我需要那里的listview保持不变?您的解决方案很好,谢谢。但我需要这样的A和B.我该如何做到这一点? –

+0

编写你想在onCreate方法中保持不变的代码,以及从onStart或onRestart方法的活动返回时要更新的代码。 – jeet

0

您正在启动一个新的活动,该活动将调用已启动的活动的onCreate方法,并重新开始。您想要保持相同状态,请致电finish()从您的活动B.

请看看startActivityForResult为了得到您正在寻找此行为。

+0

但在同一时间,我需要从活动B传递数据(ArrayList的人)到活动A,而要做到这一点,我需要的意图..... –

0

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

+0

你的'OnCreate()'被调用一次(当应用程序启动时),然后你的'NewIntent()'方法被调用其余的代码,在那里你可以重新加载你的数据。 – Anuj

1

您必须使用startActivityForResult方法

然后在你的B活动,你可以通过你的结果:

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

,你会得到的onActivityResult方法上的α活性的值

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); 
      } 

}}

相关问题