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

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

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

代码

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

最佳答案

对于片段,您无法使用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");

}

09-25 20:21