从另一个 activity 更新数据片段
Update data fragment from another activity
这似乎很容易,但我找不到解决方案,尽管我已经检查过:
How to update Android fragment from activity?
How to change fragment's textView's text from activity
我的问题是:
我有 4 个 class:
- MainActivity.java
- HistoryFragment.java
- ConversationDialog.java
- CallActivity.java
在MainActivity.java中,其内容2个Fragment包括HistoryFragment和ContactFragment。在 HistoryFragment 中,我调用 ConversationDialog 来显示对话框,输入对话框并按 OK 打开 CallActivity。
现在,我希望当我从 CallActivity 返回时,我必须用新数据更新 HistoryFragment。
但是经过研究,我做不到
请帮我做一下。
当您从 CallActivity 按下后退按钮时,将调用 MainActivity 的 onResume() 函数。逻辑是这样的。
执行以下步骤,
1.Implement HistoryFragment 中的 public 方法(即 updateContent())来更新您的内容。
2.Get 来自 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.After获取实例,通过实例调用相关方法
aFragment.updateContent()
开始呼叫时Activity 使用 startActivityForResults 像:
Intent intent = new Intent(this, CallActivity.class);
startActivityForResult(intent, 1);
其中 1 是稍后用于取回您请求的数据的请求代码。
然后在你的onBackPress函数中调用Activity
Intent intent = new Intent();
intent.putExtra("id","value")
setResult(RESULT_OK, intent);
finish();
然后执行此操作以获取您在之前 Activity
中的数据
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 的标识符,即 "value"。我想现在你可以使用 public 变量轻松完成将数据添加到历史片段的其余部分。
这似乎很容易,但我找不到解决方案,尽管我已经检查过: How to update Android fragment from activity? How to change fragment's textView's text from activity
我的问题是:
我有 4 个 class:
- MainActivity.java
- HistoryFragment.java
- ConversationDialog.java
- CallActivity.java
在MainActivity.java中,其内容2个Fragment包括HistoryFragment和ContactFragment。在 HistoryFragment 中,我调用 ConversationDialog 来显示对话框,输入对话框并按 OK 打开 CallActivity。
现在,我希望当我从 CallActivity 返回时,我必须用新数据更新 HistoryFragment。
但是经过研究,我做不到
请帮我做一下。
当您从 CallActivity 按下后退按钮时,将调用 MainActivity 的 onResume() 函数。逻辑是这样的。
执行以下步骤,
1.Implement HistoryFragment 中的 public 方法(即 updateContent())来更新您的内容。
2.Get 来自 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.After获取实例,通过实例调用相关方法
aFragment.updateContent()
开始呼叫时Activity 使用 startActivityForResults 像:
Intent intent = new Intent(this, CallActivity.class);
startActivityForResult(intent, 1);
其中 1 是稍后用于取回您请求的数据的请求代码。
然后在你的onBackPress函数中调用Activity
Intent intent = new Intent();
intent.putExtra("id","value")
setResult(RESULT_OK, intent);
finish();
然后执行此操作以获取您在之前 Activity
中的数据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 的标识符,即 "value"。我想现在你可以使用 public 变量轻松完成将数据添加到历史片段的其余部分。