来自活动的getView片段?

时间:2013-01-28 15:30:53

标签: android android-layout android-fragments

我正在尝试在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,我该如何修复?谢谢

1 个答案:

答案 0 :(得分:0)

这是因为ft.replace(main_container.getId(),newFragment).commit();只是请求片段事务的启动,但是下次主线程有备用CPU周期时,它才会实际完成(因此调用onCreateView())。

所以,你必须等待电话

View  myViewFragment = newFragment.getView();
稍后

等(例如在onClick()方法中)