如何在片段中的onCreateView之后再次访问视图?

问题描述:

其实我使用Fragment与FragmentPagerAdapter,但我有问题,当我试图再次访问片段中的视图为null。 pageNum也是null。我尝试了很多方法来解决它,但它没有工作。如何在片段中的onCreateView之后再次访问视图?

FirstFragment.java

public class FirstFragment extends Fragment{ 
    private int pageNum; 
    private TextView titleTxt; 
    private LinearLayout topPan; 

    public static FirstFragment newInstance(int page) { 
     FirstFragment fragment = new FirstFragment(); 
     Bundle args = new Bundle(); 
     args.putInt("page", page); 
     fragment.setArguments(args); 
     return fragment; 
    } 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     pageNum = getArguments().getInt("page", 0); 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     View view = inflater.inflate(R.layout.workflow_item_layout, container, false); 
     titleTxt = (TextView) view.findViewById(R.id.title); 
     topPan = (FrameLayout) view.findViewById(R.id.top_pan); 
    } 

    public void setTopPanVisible(boolean isVisible) { 
     topPan.setVisibility(isVisible); 
    } 

pageChangeListener码

private ViewPager.OnPageChangeListener pageChangeListener = new ViewPager.OnPageChangeListener() { 
     @Override 
     public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { 
     } 

     @Override 
     public void onPageSelected(int position) { 
     } 

     @Override 
     public void onPageScrollStateChanged(int state) { 
      final int position = pager.getCurrentItem(); 

      if (state == ViewPager.SCROLL_STATE_IDLE) { 
       final FirstFragment fragment = (FirstFragment) adapter.getItem(position); 
       fragment.setTopPanVisible(true); 

凸版为null时,我称为pageChangeListener 'setTopPanVisible'。 Views如何保持活力以获得价值?

如果你得到一个空指针异常,那么这意味着两件事情之一:

  1. 要调用setTopPanVisible()片段的onCreateView()方法之前被调用。
  2. 或者你view.findViewById(R.id.top_pan);

为了解决这个问题,你应该找出你面临的这些问题中的哪一个。

+0

我想在做一个片段后改变topPan的可见性,所以这就是为什么我需要在onCreateView调用后调用setTopPanVisible。 – kimkevin 2014-11-24 05:45:03

+0

你面临哪个问题。 #1或#2? – 2014-11-24 05:50:45

+0

确切地说#1,我现在正在寻找并尝试。 – kimkevin 2014-11-24 05:51:49