あなたが探しているのはですViewPager
。目的の動作を作成する方法を示すために、小さなサンプルを作成しました。
private class MyAdapter extends FragmentPagerAdapter {
public MyAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
if (position == 0) {
return StarterFragment.newInstance(R.id.viewPagerIdFromTheLayout);
} else {
return NormalFragment.newInstance(position);
}
}
@Override
public int getCount() {
return 5;
}
}
public static class StarterFragment extends ListFragment {
public static StarterFragment newInstance(int pagerId) {
StarterFragment sf = new StarterFragment();
Bundle args = new Bundle();
args.putInt("pagerId", pagerId);
sf.setArguments(args);
return sf;
}
@Override
public void onListItemClick(ListView l, View v, int position, long id) {
((ViewPager) getActivity().findViewById(
getArguments().getInt("pagerId"))).setCurrentItem(position,
true);
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
setListAdapter(new ArrayAdapter<String>(getActivity(),
android.R.layout.simple_list_item_1, new String[] { "None",
"First Page", "Second Page", "Third Page", "Forth Page" }));
}
}
public static class NormalFragment extends Fragment {
public static NormalFragment newInstance(int position) {
NormalFragment nf = new NormalFragment();
Bundle args = new Bundle();
args.putInt("position", position);
nf.setArguments(args);
return nf;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
TextView tv = new TextView(getActivity());
tv.setText("Fragment no." + getArguments().getInt("position"));
return tv;
}
}
コードは次のようになります。ViewPager
上記のアダプタを使用してを作成します。これViewPager
には2つのタイプがあります。1つはFragments
すべての方向性を持ち、もう1つはスクロールButtons
する通常のタイプです。Fragments
簡単にするためにListFragment
、を使用しました。独自のレイアウトを使用しButtons
、コードを簡単に適応させることができます。これに、からFragment
のIDを渡して、後で使用します。ユーザーが最初からのいずれかをクリックすると、そのメソッドで、とを使用してを検索し、そのメソッドを使用してそのまでスクロールします。によるViewPager
FragmentActivity
Buttons
Fragment
onClick
Button
getActivity()
findViewById
ViewPager
setCurrentItem(position, true)
Fragment
ViewPager
の間を手動でスワイプすることはできFragments
ます。