質問を最後にもう一度読んでください...各サイズのデバイスに特定のレイアウトも設定してください。スクリーンショットでは、これをタブレットで実行しようとしているように見えます。電話でも同じ結果が得られますか?
レイアウトの設定
レイアウトがこれに似ていることと、ViewPager があることを確認してください。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@color/body_background">
<include layout="@layout/pagerbar" />
<include layout="@layout/colorstrip" />
<android.support.v4.view.ViewPager
android:id="@+id/example_pager"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1" />
</LinearLayout>
アクティビティの設定
「FragmentActivity」で PagerAdapter をセットアップし、「OnPageChangeListener」を実装していることを確認してください。次に、onCreate で PagerAdapter を適切にセットアップします。
public class Activity extends FragmentActivity
implements ViewPager.OnPageChangeListener {
...
public void onCreate(Bundle savedInstanceState) {
PagerAdapter adapter = new PagerAdapter(getSupportFragmentManager());
pager = (ViewPager) findViewById(R.id.example_pager);
pager.setAdapter(adapter);
pager.setOnPageChangeListener(this);
pager.setCurrentItem(MyFragment.PAGE_LEFT);
...
}
/* setup your PagerAdapter which extends FragmentPagerAdapter */
static class PagerAdapter extends FragmentPagerAdapter {
public static final int NUM_PAGES = 2;
private MyFragment[] mFragments = new MyFragment[NUM_PAGES];
public PagerAdapter(FragmentManager fragmentManager) {
super(fragmentManager);
}
@Override
public int getCount() {
return NUM_PAGES;
}
@Override
public Fragment getItem(int position) {
if (mFragments[position] == null) {
/* this calls the newInstance from when you setup the ListFragment */
mFragments[position] = MyFragment.newInstance(position);
}
return mFragments[position];
}
}
...
フラグメントのセットアップ
実際の ListFragment (listViews) を設定すると、次のような引数を使用して複数のインスタンスを作成できます。
public static final int PAGE_LEFT = 0;
public static final int PAGE_RIGHT = 1;
static MyFragment newInstance(int num) {
MyFragment fragment = new MyFragment();
Bundle args = new Bundle();
args.putInt("num", num);
fragment.setArguments(args);
return fragment;
}
listViews をリロードすると (これを実装することに決めた場合)、次のように引数を使用して、現在のフラグメント インスタンスを特定できます。
mNum = getArguments() != null ? getArguments().getInt("num") : 1;
コードをステップ実行すると、各インスタンスをステップ実行することがわかります。そのため、上記のコードはonCreateでのみ必要であり、reload メソッドは次のようになります。
private void reloadFromArguments() {
/* mNum is a variable which was created for each instance in the onCreate */
switch (mNum) {
case PAGE_LEFT:
/* maybe a query here would fit your needs? */
break;
case PAGE_RIGHT:
/* maybe a query here would fit your needs? */
break;
}
}
ゼロから始めるのではなく、そこから構築できる例で役立つソースはほとんどありません。
遊び場からのより多くの説明と例。
http://blog.peterkuterna.net/2011/09/viewpager-meets-swipey-tabs.html
への参照:
http://code.google.com/p/android-playground/
より多くの情報といくつかの良いリンク。
http://www.pushing-pixels.org/2012/03/16/responsive-mobile-design-on-android-from-view-pager-to-action-bar-tabs.html
より具体的な質問が投稿された場合は、いつでも回答を編集 (更新) して質問に対処できます。幸運を!:)