1

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

    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;

    }

两者都是非 Null 并且不会在我的代码中的任何地方进行修改。

稍后从 Main Activity 调用它:

         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,为什么?我无法解释。

蛋氨酸

4

2 回答 2

5

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

于 2013-03-30T10:53:57.363 回答
2

onCreateView仅在片段绘制 UI 时调用。在这种情况下,onSecond之前调用过onCreateView,所以mView还没有被夸大,这就是为什么它为空。您可以通过将onSecond逻辑放入onCreateView.

于 2014-03-07T20:13:52.380 回答