我正在尝试在onCreateView()(Fragment)中创建视图以通过findviewbyId修改组件但总是返回null
例如
这是我片段中的onCreateView
public View onCreateView(final LayoutInflater inflater,
final ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.myLayout, container, false);
return view;
}
并从我的活动调用片段并添加例如。
FragmentTransaction ft = getFragmentManager().beginTransaction();
Fragment newFragment = new myFragment();
ft.replace(main_container.getId(), newFragment).commit();
/*and i need modify the text button with setText() of View create in my fragment
eg*/
View myViewFragment = newFragment.getView();
Button b = (Button) myViewFragment.findViewById(R.id.mybuttoninfragment);
b.setText("Hello World");
但总是返回null,我该如何修复?谢谢
答案 0 :(得分:0)
这是因为ft.replace(main_container.getId(),newFragment).commit();只是请求片段事务的启动,但是下次主线程有备用CPU周期时,它才会实际完成(因此调用onCreateView())。
所以,你必须等待电话
View myViewFragment = newFragment.getView();
稍后等(例如在onClick()方法中)