从活动获取结果而不完成结果发布活动并再次显示数据进行编辑的最佳方法?

时间:2019-02-22 07:35:50

标签: android android-activity

我有两个活动,活动A和活动B。当我在活动A中单击一个按钮时,活动B被调用为结果,然后在活动B的edittext中输入一些数据,并将此文本作为结果发送到活动A然后在Activity上将结果显示在TextView中。现在我再次要编辑活动B中的文本。

是否有任何方法可以完成或重新创建活动B,所以当我切换回活动B时,数据将保留在那里。

如果需要,我也将发布我的代码。

2 个答案:

答案 0 :(得分:0)

  • 如果您返回到ActivityA,则显然ActivityB将被销毁。您需要通过intent.putExtra(your_key, your_value);

  • 将这些数据再次传递给ActivityB
  • 另一种解决方案是将数据存储到singleTon类。

答案 1 :(得分:0)

摘自Android Developer文档

  

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,则将被忽略。

就您而言,您可以在ActivityAActivityB之间切换,而无需完成或重新创建它们。

放在一起。

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