onActivityResult 中取得資料,Log 正常顯示,但 tv.setText(...) 介面不更新。
onActivityResult 雖在主執行緒回調,但若 Fragment 嵌套、ViewPager 延遲初始化、或 View 尚未附著到視窗,直接更新可能不生效。
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 100 && resultCode == 200 && data != null) {
final String value = data.getStringExtra("b");
// 確保在 UI 執行緒且 View 已就緒
runOnUiThread(new Runnable() {
@Override
public void run() {
tv.setText(value);
}
});
}
}
// Fragment 中
requireActivity().runOnUiThread(() -> textView.setText(value));
// 或
view.post(() -> textView.setText(value));
tv 是否已正確 findViewById 且非 nullonActivityResult 前就已設定 setText 但被覆蓋