0

지금은 조각 안에 ViewPager가 있습니다. ViewPager의 첫 번째 페이지에서 일부보기를 가져오고 사용해야합니다. 내 문제는 조각에서 onCreateView 메서드를 완료하기 전에 뷰를 바로 가져올 수있는 방법입니다.조각 완료 전에 ViewPager에서보기 가져 오기 onCreateView

은 여기 내 코드의 일부입니다 :

MyFragment.java :

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    mFragmentLayout = inflater.inflate(R.layout.profile_fragment, container, false); 

    ViewPager viewPager = (ViewPager) findViewById(R.id.view_pager); 
    MyPagerAdapter myPagerAdapter = new MyPagerAdapter(getContext()); 
    viewPager.setAdapter(myPagerAdapter); 

    View firstView = myPagerAdapter.getFirstView(); 

    // I need to get the view of the first page and find TextView inside that view. 
    // My problem is that firstView is null 
    // since viewPager doesn't call instantiateItem yet when below sentence runs. 
    mTextView = (TextView) firstView.findViewById(R.id.text); 
    return mFragmentLayout; 
} 

MyPagerAdapter.java :

private View firstView; 

@Override 
public Object instantiateItem(ViewGroup collection, int position) { 
    View layout = mInflater.inflate(R.layout.mixin, collection, false); 

    // Other logic to set the page 

    if (position == 0) { 
     firstView = layout; 
    } 
    collection.addView(layout); 
    return layout; 
} 

public View getFirstView() { 
    return firstView; 
} 

내가 getFirstView를 (호출 할 때 시작이 시작되지 않습니다 ViewPager 것 같은데), 그래서 나는 null이된다;

조각의 뷰를 ViewPager로 전달할 수도 있지만 첫 페이지에만 적용되므로 어떻게해야할지 모르겠다. 첫 번째 페이지의보기 만 설정하는 방법.

답변

0

변경 ViewPager viewPager = (ViewPager) findViewById(R.id.view_pager);

ViewPager viewPager = (ViewPager) mFragmentLayout.findViewById(R.id.view_pager);

instantiateItemis 아직 호출되지 때문에, firstView은 여전히 ​​널 그것은 작동하지 않습니다

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    mFragmentLayout = inflater.inflate(R.layout.profile_fragment, container, false); 

    ViewPager viewPager = (ViewPager) mFragmentLayout.findViewById(R.id.view_pager); 
    MyPagerAdapter myPagerAdapter = new MyPagerAdapter(getContext()); 
    viewPager.setAdapter(myPagerAdapter); 

    View firstView = myPagerAdapter.getFirstView(); 

    // I need to get the view of the first page and find TextView inside that view. 
    // My problem is that firstView is null 
    // since viewPager doesn't call instantiateItem yet when below sentence runs. 
    mTextView = (TextView) firstView.findViewById(R.id.text); 
    return mFragmentLayout; 
} 
+0

당신의 infaleted 레이아웃에서 ViewPager 받기 – mlin956

관련 문제