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はまだnullであることが動作しません

@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

関連する問題