0

Android Studioのタブ付きアクティビティを使用しています。なぜviewPagerのsetCurrentItem()が次のページで動作し、前のページで動作しないのですか?

私はスワイプしているページの間を移動していますが、2つのビューを追加してnextとpreviousをonclickメソッドで移動しましたが、次のページに移動するだけでは機能しません。

 nextAbitudini.setOnClickListener(new View.OnClickListener() { 
        @Override 
        public void onClick(View view) { 
         //it works 
         mViewPager.setCurrentItem(getArguments().getInt(ARG_SECTION_NUMBER)); 
        } 
       }); 

    backAbitudini.setOnClickListener(new View.OnClickListener() { 
        @Override 
        public void onClick(View view) { 
         //it doesn't work 
         mViewPager.setCurrentItem(getArguments().getInt(ARG_SECTION_NUMBER)-1); 
        } 
       }); 

私はFragmentPagerAdapterを使用しています。 スワイプバックします。

onClickメソッドをonCreateviewの内側に配置しました。

+0

あなたはViewPagerのonPageSelectedにARG_SECTION_NUMBERを変更ください:

その結果、あなたのコードは次のようにすべきですか? – MohanadMohie

+0

はい、私も修正番号を設定するために試しました –

答えて

1

タブ付きアクティビティを参照して、フラグメントが初期化されるときにセクション番号を確認してください。 (sectionNumber = position + 1)。

@Override 
    public Fragment getItem(int position) { 
     // getItem is called to instantiate the fragment for the given page. 
     // Return a PlaceholderFragment (defined as a static inner class below). 
     return PlaceholderFragment.newInstance(position + 1); 
    } 

したがって、ARG_SECTION_NUMBER-1は、現在の断片の位置を意味する前にARG_SECTION_NUMBER-2、及び次にARG_SECTION_NUMBER

nextAbitudini.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View view) { 
        //it works 
        mViewPager.setCurrentItem(getArguments().getInt(ARG_SECTION_NUMBER)); 
       } 
      }); 

backAbitudini.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View view) { 
        //it doesn't work 
        mViewPager.setCurrentItem(getArguments().getInt(ARG_SECTION_NUMBER)-2); 
       } 
      }); 
+1

あなたは 'ViewPager'を保持している' Activity'に、 'Fragment'の中ではなく、次と戻るボタンを置くべきであることにも注意してください。 – MohanadMohie

+0

あなたは正しいです、私はアクティビティの中を移動します! –

関連する問題