我想在片段的onCreate()
方法中获取文本视图的ID。它每次都返回null
。
我想在片段中显示我的联系人。为此,在FetchContact()
方法结束时,我将联系人列表分配给TextView
。
当我发现null
我的应用程序提供TextView
时,我的代码返回NullPointerException
。
任何可以告诉我如何在Id
方法中获取TextView
Fragment
的{{1}}的人。
我尝试创建一个activity类的对象来获取onCreate()
,但代码仍返回TextView
。没有运气。
null
答案 0 :(得分:4)
找到TextView我的应用程序给出了NullPointerException。
因为在onCreate
方法之前调用的Fragment生命周期onCreateView
方法。
覆盖在onViewCreated
方法之后调用的onCreateView
,并使用onViewCreated
方法的第一个参数来访问Fragment布局中的视图:
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
TextView text =(TextView)view.findViewById(R.id.textContact);
/// your code here....
}
答案 1 :(得分:2)
使用
你的oncreateView中的 rootView.findViewById(R.id....)
你应该在那里做与UI相关的工作
答案 2 :(得分:0)
你应该在onActivityCreated方法
上使用这样的东西@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
TextView tv = (TextView) getActivity().findViewById(R.id.textView1);
}
}
或使用回调
答案 3 :(得分:0)
在
onCreateView
方法调用之前,您无法使用 findViewById 初始化任何视图。
所以你必须等待callback
运行。有两种方法可以实现它。它将在onActivityCreated
上运行,因为它在onCreateView
View param
来自onViewCreated。getView()
onCreateView()像
TextView tv = (TextView) getView().findViewById(R.id.tv_id);