アクティビティでビューページャを使用しています。シーケンスは次のとおりです。最初のページの次のボタンをクリックすると、2ページ目に移動します。 2番目のページのボタンをクリックすると3番目のページに移動します。しかし、私の現在のアプリは奇妙な動作をしています。つまり、2番目のページの次のボタンをクリックすると、4番目のページに移動します。最初のページの最初のボタンをクリックすると再び3ページ目にジャンプします。2番目のフラグメントアンドロイドのボタンをクリックすると、ページャが不規則な位置にスキップします。
ここはコードです。
public class ViewPagerActivity extends AppCompatActivity {
private ViewPager pager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.viewpager_act);
setViewPager();
/*pager.setPageTransformer(true, new ZoomPageTransformer());
pager.setAdapter(new MyViewPagerAdapter(getSupportFragmentManager()));
pager.post(new Runnable() {
@Override
public void run() {
pager.setCurrentItem(position); //don't know how to use this from fragment
}
});*/
}
private void setViewPager() {
pager = (ViewPager) findViewById(R.id.viewPager);
FragmentManager fm = getSupportFragmentManager();
ViewPagerAdapter adapter = new ViewPagerAdapter(fm);
pager.setAdapter(adapter);
}
public void setCurrentItem(int selectedPosition) {
pager.setCurrentItem(selectedPosition, true);
}
private class ViewPagerAdapter extends FragmentPagerAdapter {
public ViewPagerAdapter(FragmentManager supportFragmentManager) {
super(supportFragmentManager);
}
@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
return FirstPager.newInstance();
case 1:
return SecondPager.newInstance();
case 2:
return ThirdPager.newInstance();
case 3:
return FourthPager.newInstance();
case 4:
return FifthPager.newInstance();
case 5:
return SixthPager.newInstance();
default:
return null;
}
}
@Override
public int getCount() {
return 6;
}
}
FirstPager:他のフラグメントで同様に
public class FirstPager extends Fragment {
private ImageView slideArrow;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.first_pager, container, false);
return v;
}
public static FirstPager newInstance() {
FirstPager fragment = new FirstPager();
return fragment;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
initUI();
}
private void initUI() {
slideArrow = (ImageView) getActivity().findViewById(R.id.next_arrow);
slideArrow.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
((ViewPagerActivity)getActivity()).setCurrentItem (1);
}
});
}
}
、私は2,3,4,5および6としてのCurrentItemを与えた。しかし、それは動作が正しくない位置です。
私はpostを参照しましたが、私の場合、どのように正しく動作する位置を作るためにフラグメントから渡す方法をどのように適用するのですか?
?あなたは何をクリックしていますか? –
すべてのフラグメントにボタンがあります。すなわち次のボタン。次のボタンをクリックすると、次のページにスワイプします。しかし、問題はポジションが適切ではないということです。 @RushiAyyappa – Shadow
あなたはそのボタンコードを投稿できますか? –