从另一个活动更新数据片段

时间:2015-11-06 11:20:13

标签: java android android-activity fragment

它似乎很容易,但我找不到解决方案,尽管我已经检查过: How to update Android fragment from activity? How to change fragment's textView's text from activity

我的问题是:

我有4节课:

  • MainActivity.java
  • HistoryFragment.java
  • ConversationDialog.java
  • CallActivity.java

在MainActivity.java中,内容2片段包括HistoryFragment和ContactFragment。从HistoryFragment中,我调用ConversationDialog来显示对话框,输入到对话框并按OK打开CallActivity。

现在,我希望当我从CallActivity回复时,我必须使用新数据更新HistoryFragment。

但经过研究,我无法做到。

请帮我这样做。

2 个答案:

答案 0 :(得分:1)

当您从CallActivity按下按钮时,将调用MainActivity的 onResume()功能。这就是逻辑。

执行以下步骤,

1.在HistoryFragment中实现一个公共方法(即updateContent())来更新你的内容。

2.从MainActivity的onResume()获取HistoryFragment实例

FragmentManager fragmentManager = activity.getSupportFragmentManager();
HistoryFragment aFragment=fragmentManager.findFragmentByTag("Place the History fragment TAG here which you have used to load before");

3.获取实例后,通过实例调用相关方法。

aFragment.updateContent()

答案 1 :(得分:0)

启动CallActivity时,请使用startActivityForResults,如:

Intent intent = new Intent(this,  CallActivity.class);
startActivityForResult(intent, 1);

其中1是请求代码,稍后将用于取回您请求的数据。

然后在Call Activity中的onBackPress函数

Intent intent = new Intent();
intent.putExtra("id","value")
setResult(RESULT_OK, intent);        
finish();

然后执行此操作以获取上一个活动中的数据

public void onActivityResult(int requestCode, int resultCode, Intent data) {
  super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 1) {
     if(resultCode == RESULT_OK){
      String stredittext=data.getStringExtra("id");
  }
} 

使用“id”是的标识符,“value”。我想现在您可以轻松完成剩余的数据添加到历史记录中片段使用公共变量。