我有一个片段,视图存储在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,为什么?我无法解释。
倚天
答案 0 :(得分:5)
我认为你在adapter.getItem()方法中创建了另一个Fragment实例。
答案 1 :(得分:1)
onCreateView
。在这种情况下,onSecond
之前会调用onCreateView
,因此mView
尚未充气,这就是它为空的原因。您可以将onSecond
逻辑放入onCreateView
。