getView()返回textview但textview没有更新

时间:2014-05-16 17:18:46

标签: android

我有一个扩展B的片段A.在B的内部我在onCreateView中创建我的观点

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) 
{
    mView = super.onCreateView(inflater, container, savedInstanceState);
    mText1 = (TextView) mView.findViewById(R.id.textView1)
    mText2 = (TextView) mView.findViewById(R.id.textView2)
    retrun mView
}

但是在我的文字更新方法中,如果我尝试像这样mText1(我知道你可以使用之前的mText1字段,但这不是重点)

public void updateView()
{
  mText1 = (TextView) getView().findViewById(R.id.textView1);
  mText1.setText("test");
  mText2.setText("test");
}

请注意,我使用getView()来获取mText1。在屏幕上奇怪地只设置了mText2并且mText1完全空白!! ??

编辑:此外,如果我切换到另一个片段然后返回mText1和mText2将不会更新

2 个答案:

答案 0 :(得分:0)

如果您有多个活动片段将文本视图定义为R.id.textView1,那么您可能在视图层次结构中的其他位置找到了文本视图。当你调用setText()时,你没有得到NullPointerException,所以findViewById()正在返回一些东西。

由于getView()返回Activity的根视图,findViewById将找到具有该id的第一个视图。

尝试使用mView.findViewById(...)将搜索范围限制为片段中的视图。

答案 1 :(得分:0)

我有来自第三方库的静态引用,它保持旧片段的存活:(