2014-11-24 115 views
0

其實我使用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

如果你得到一個空指針異常,那麼這意味着兩件事情之一:

  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

相關問題