を使用するのViewPager
は初めてですが、アプリの最初の画面はListView
、ユーザーが新しいアイテムを追加/削除できる であり、アイテムの 1 つをクリックすると、渡された ID に基づいて「詳細」フラグメントが表示されます。ユーザーがリストから各詳細までスワイプできるようにしたいと思います。
ViewPager
IDが常に1つずれていることを除いて、私は機能しています。これは私の理解不足かもしれませんが、details フラグメントの にViewPagers
ブレークonCreateView
ポイントを設定すると、アプリのロード時にブレークポイントがヒットし、渡される id が最初の id になります。したがって、ID が 1、2、3、4 の場合、アプリが読み込まれると、アプリの起動時の IDonCreateView
は 1 になります。リストから最初の詳細フラグメントへの最初のスワイプを実行すると、ID は 2 (私はそれが1であると予想するとき)。
これは私がこれまでに持っているものです:
Main.class (アプリ起動時のこの初期アクティビティ)
public class Main extends SherlockFragmentActivity
{
private static int NUMBER_OF_PAGES;
private ViewPager mViewPager;
private MyFragmentPagerAdapter mMyFragmentPagerAdapter;
private static List<Fragment> fragments;
@Override
public void onCreate(final Bundle icicle)
{
super.onCreate(icicle);
setContentView(R.layout.main);
mViewPager = (ViewPager)findViewById(R.id.viewpager);
mMyFragmentPagerAdapter = new MyFragmentPagerAdapter(getSupportFragmentManager());
mViewPager.setAdapter(mMyFragmentPagerAdapter);
final List<Integer> ids = GetIds(); //loads ids to popular the viewpager
NUMBER_OF_PAGES = ids.size();
fragments = new ArrayList<Fragment>();
fragments.add(new ListingFragment()); //initial screen
for(Integer id : ids)
fragments.add(DetailsFragment.newInstance(id));
}
private static class MyFragmentPagerAdapter extends FragmentStatePagerAdapter {
public MyFragmentPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int index) {
return fragments.get(index);
}
@Override
public int getCount() {
return NUMBER_OF_PAGES;
}
}
}
DetailsFragment.class
public class DetailsFragment extends SherlockFragmentActivity
{
private int detailId;
private List<Integer> items;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
}
@Override
public void onActivityCreated(final Bundle icicle)
{
super.onActivityCreated(icicle);
}
public static DetailsFragment newInstance(int id) {
DetailsFragment lf = new DetailsFragment();
Bundle bundle = new Bundle();
bundle.putInt("id", id);
lf.setArguments(bundle);
return lf;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.details, container, false);
detailId = getArguments().getInt("id"); //this id is always off
items = GetItems();
return view;
}
}