我有两项活动。活动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);
有什么想法吗? 谢谢你的帮助
答案 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);
}
} }