我有两个活动,活动A和活动B。当我在活动A中单击一个按钮时,活动B被调用为结果,然后在活动B的edittext中输入一些数据,并将此文本作为结果发送到活动A然后在Activity上将结果显示在TextView中。现在我再次要编辑活动B中的文本。
是否有任何方法可以完成或重新创建活动B,所以当我切换回活动B时,数据将保留在那里。
如果需要,我也将发布我的代码。
答案 0 :(得分:0)
如果您返回到ActivityA,则显然ActivityB将被销毁。您需要通过intent.putExtra(your_key, your_value);
另一种解决方案是将数据存储到singleTon类。
答案 1 :(得分:0)
FLAG_ACTIVITY_REORDER_TO_FRONT
public static final int FLAG_ACTIVITY_REORDER_TO_FRONT
如果在传递给Context.startActivity()的Intent中进行设置,则此标志将 使启动的活动被带到任务的最前面 历史记录堆栈(如果已在运行)。
例如,考虑一个由四个活动组成的任务:A,B,C, D.如果D使用解析为Intent的Intent调用startActivity() 活动B的组成部分,那么B将被带到 历史记录堆栈,其结果顺序为:A,C,D,B。此标志将 如果还指定了FLAG_ACTIVITY_CLEAR_TOP,则将被忽略。
就您而言,您可以在ActivityA
和ActivityB
之间切换,而无需完成或重新创建它们。
放在一起。
活动A
// Call this method when users press a button on ActivityA to go to ActivityB.
public void goToActivityB(View view) {
Intent intent = new Intent(this, ActivityB.class);
intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
startActivity(intent);
}
// When users press a button from ActivityB, ActivityA will be bring to front and this method will be called by Android.
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
String data = intent.getStringExtra("data");
// Update your text view here
yourTextView.setText(data);
}
活动B
// Call this method when users press on a button in ActivityB to pass data back to ActivityA.
public void backToActivityA(View view) {
Intent intent = new Intent(this, ActivityA.class);
intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
// Send text that users enter into your edit text back to ActivityA
intent.putExtra("data", yourEditText.getText().toString());
startActivity(intent);
}