我有一个扩展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将不会更新
答案 0 :(得分:0)
如果您有多个活动片段将文本视图定义为R.id.textView1,那么您可能在视图层次结构中的其他位置找到了文本视图。当你调用setText()时,你没有得到NullPointerException,所以findViewById()正在返回一些东西。
由于getView()返回Activity的根视图,findViewById将找到具有该id的第一个视图。
尝试使用mView.findViewById(...)将搜索范围限制为片段中的视图。
答案 1 :(得分:0)
我有来自第三方库的静态引用,它保持旧片段的存活:(