Android - 片段视图在onCreateView外获取NULL

时间:2013-03-30 10:48:49

标签: java android android-activity null fragment

我有一个片段,视图存储在onCreateView中的一个Class变量中:

    private FrameLayout mView;
    private TextView countdown;

    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle bdl) {
            mView = (FrameLayout)inflater.inflate(R.layout.vakit_fragment, container, false);
            countdown = (TextView) mView.findViewById(R.id.countdown);
    ...
            return mView;

    }

这两个都是非空的,不会在我的代码中的任何地方进行修改。

稍后将从主要活动中调用:

         MainFragment frag = (MainFragment) mAdapter.getItem(mPager.getCurrentItem());
         if(frag!=null) {
         frag.onSecond();
         }

并在片段中:

protected void onSecond(){
    String left=times.getLeft();


    if(countdown!=null)     
        countdown.setText(left);

}

在onSecond中,mView和countdown都是NULL,为什么?我无法解释。

倚天

2 个答案:

答案 0 :(得分:5)

我认为你在adapter.getItem()方法中创建了另一个Fragment实例。

答案 1 :(得分:1)

仅当片段绘制UI时才会调用

onCreateView。在这种情况下,onSecond之前会调用onCreateView,因此mView尚未充气,这就是它为空的原因。您可以将onSecond逻辑放入onCreateView

来解决此问题