在 Android Fragment onResume 中重新填充值

发布于 2024-12-17 08:22:06 字数 613 浏览 1 评论 0原文

我有一个 Fragment(A),其 TextView 的值使用 setText() 方法设置为“XXXX”。我将 Fragment(A) 替换为 Fragment(B),然后再次将 B 替换为 A。

当我这样做时,值 XXXX 在 Fragment(A) TextView 中消失了。我尝试在 onStart 和 onResume 方法中调用 TextView.setText 方法 - 相同的结果。当我调试代码时,我可以从字面上看到正在使用的 setText 方法和值 XXXX 就在那里。我在 LogCat 上打印出来,它也在那里,但我在屏幕上看不到任何值。

我尝试谷歌搜索,但找不到答案。我将不胜感激任何指点。

代码

public void onResume() { 
  super.onResume(); 
  String dData = readFileFromSDCard(); 
  String dArray[] = dData.split(";"); 
  txtName = (TextView) getActivity().findViewById(R.id.txtName); 
  txtName.setText("first name")
}

I have a Fragment(A) with a TextView with value "XXXX" set using setText() method. I replace Fragment(A) by Fragment(B) and then I replace B by A again.

When I do this, the value XXXX is gone in the Fragment(A) TextView. I tried calling the TextView.setText method in the onStart as well as the onResume methods - same result. When I debug the code, I can literally see that the setText method being used and the value XXXX is there. I printed it out on LogCat and it is there too, but I don't see any values on the screen.

I tried googling and I couldn't get an answer. I would appreciate any pointers.

Code

public void onResume() { 
  super.onResume(); 
  String dData = readFileFromSDCard(); 
  String dArray[] = dData.split(";"); 
  txtName = (TextView) getActivity().findViewById(R.id.txtName); 
  txtName.setText("first name")
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

∞琼窗梦回ˉ 2024-12-24 08:22:06

对于片段,您无法使用 getActivity().findViewById(R.id.txtName); 获取布局,您应该这样做。当您将片段 B 替换回 A 时,也会调用此函数。

当然,此代码需要位于您的 Fragment 类中。

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

    View view = inflater.inflate(R.layout.your_layout, container, false);        
    String driverData = readFileFromSDCard(); 
    String driverArray[] = driverData.split(";"); 
    txtName = (TextView) view.findViewById(R.id.txtName); 
    txtName.setText("Andrew");

}

With fragments you can't get the layout using getActivity().findViewById(R.id.txtName); you should do it like this. This is called when also when you replace fragment B back to A.

This code needs to stand in you Fragment class of course.

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

    View view = inflater.inflate(R.layout.your_layout, container, false);        
    String driverData = readFileFromSDCard(); 
    String driverArray[] = driverData.split(";"); 
    txtName = (TextView) view.findViewById(R.id.txtName); 
    txtName.setText("Andrew");

}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文