0

Momentan habe ich einen ViewPager in einem Fragment. Ich brauche einige Ansichten auf der ersten Seite des ViewPagers. Mein Problem ist, wie kann ich diese Ansichten erhalten, bevor Sie die Methode "CreateView" im Fragment beenden?Erhalten Sie Ansicht von ViewPager, bevor das Fragment amCreateView endet

Hier sind einige meiner Codes:

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; 
} 

wie ViewPager Sieht nicht initiieren startet, wenn ich getFirstView nennen (), also werde ich null;

Ich kann auch eine Ansicht von Fragment in den ViewPager übergeben, aber ich weiß nicht, wie es geht, da es nur für die erste Seite ist. So legen Sie nur die Ansicht der ersten Seite fest.

Antwort

0

ändern ViewPager viewPager = (ViewPager) findViewById(R.id.view_pager);

zu

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

Erhalten ViewPager von Ihrem infaleted Layout

@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

es nicht funktioniert, Firstview ist immer noch null, da instantiateItemis noch nicht genannt – mlin956