gpt4 book ai didi

java - 从 fragment 更新 UI

转载 作者:太空宇宙 更新时间:2023-11-04 12:37:19 25 4
gpt4 key购买 nike

我有一个 fragment ,它通过 onActivityResult(...); 的 Intent 从 DialogFragment 获取数据;

我正在尝试更新 fragment 的 UI,但 runOnUiThread 不起作用。

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
ArrayList<Farm> farms = data.getParcelableArrayListExtra("farms_list");
float totalArea = 0;
for(Farm farm : farms) {
if (farm.isSelected()) {
Log.d("farm", farm.getName());
totalArea += farm.getArea();
}
}
final float finalTotalArea = totalArea;
activity.runOnUiThread(new Runnable() {
@Override
public void run() {
area.setText(String.valueOf(finalTotalArea));
}
});
}

TextView 区域不更新。

我使用 onAttach() 方法获取对 Activity 的引用。

@Override
public void onAttach(Context context) {
super.onAttach(context);
if (!(context instanceof PageFragmentCallbacks)) {
throw new ClassCastException(
"Activity must implement PageFragmentCallbacks");
}

mCallbacks = (PageFragmentCallbacks) context;
this.activity = (Activity) context;
}

最佳答案

onActivityResult 正在主线程上调用。更多 here 。由于某种原因,无法通过此方法编辑 View (可能未创建或绘制)。您可以做的一个技巧是设置 var boolean updateTextView = false;在 onActivityResult 将其设置为 true,保存您获得的数据,然后在 onResume 上检查 updateTextView,如果 true 将数据设置到您的 TextView。

关于java - 从 fragment 更新 UI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37188270/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com