このウィザードを一度試してみましたが、ActionBarSherlock でこの正確なパターンを実装したときに、生成されたコードを完全に破棄したと思います。そのため、通常の「空白」アクティビティをゼロから開始することをお勧めします。ここに小さなステップバイステップガイドがあります。すべての手順が完全に説明されているわけではありませんが、開始するためのキーワードが記載された十分なドキュメントを見つける必要があります。
1) ActionBarSherlock をプロジェクトに追加します (明らかに)
SherlockFragmentActivity
2)適切な abs テーマを拡張して設定する新しいアクティビティを作成します
この時点で、アクション バーのある空白のアクティビティが表示されます。
3) レイアウトを変更し、ビューポートを埋める ViewPager を含めます
4) フラグメント (または今のところプレースホルダー) と ViewPager のアダプターを書き込み、これらを一緒に配線します。
ここで必要なすべてを説明するチュートリアルがたくさんあります。たとえば、このブログ投稿.
これにより、アクション バーとスワイプ可能なレイアウトを備えたアクティビティが提供されます。フラグメント間をスワイプできるようになりました。
5) アクション バー タブを追加し、それらに空白のタブ リスナーをアタッチします。
例:
actionBar = getSupportActionBar();
sampleTab = actionBar.newTab()
.setText(R.string.title)
.setTag(TABTAG_SAMPLE)
.setTabListener(tabListener);
actionBar.addTab(sampleTab);
各タブに個別のタグを付けてください (文字列 const で問題ありません)。これは、どのタブが 1 秒間にクリックされたかを識別するために使用されます。また、作成したタブ インスタンスをクラス変数に保持するようにしてください。これらは後で必要になります。タブごとに上記のスニペットを繰り返します。通常の TabListener を使用することもできますが、後でメソッドを 1 つだけオーバーライドする必要があるため、SimpleTabListener を使用することをお勧めします。
これで、アクション バー、スワイプ可能なフラグメント、および (機能しない) タブを含むアクティビティが作成されます。
6)タブリスナーを埋めてビューページャーに接続します
private SimpleTabListener tabListener = new SimpleTabListener() {
@Override
public void onTabSelected(Tab tab, FragmentTransaction ft) {
final String tag = (String) tab.getTag();
if (TABTAG_SAMPLE.equals(tag)) {
viewPager.setCurrentItem(INDEX_SAMPLE);
} else if (TABTAG_SECONDTAB.equals(tag)) {
viewPager.setCurrentItem(INDEX_SECONDFRAGMENT);
}
}
};
これは簡単です。setCurrentItem()
タブ選択イベントをリッスンし、保存されたタグを介してどのタブが選択されているかを確認し、特定のタブに関連付けられているフラグメントのインデックスを使用してviewpagers メソッドを呼び出します。
これで、タブを介してフラグメントを選択したり、スワイプしたりできるようになります。特定のフラグメントにスワイプしても、それに応じてタブが同期されず、適切に選択されないことに注意してください。
7) OnPageChangeListener を ViewPager にアタッチし、それに応じてタブを選択します
ここでも、インターフェイスの代わりに SimpleOnPageChangeListener を使用できます。短い例:
private SimpleOnPageChangeListener onPageChangeListener
= new SimpleOnPageChangeListener() {
@Override
public void onPageSelected(int position) {
switch (position) {
case INDEX_SAMPLE:
actionBar.selectTab(sampleTab);
break;
case INDEX_SECONDFRAGMENT:
actionBar.selectTab(secondTab);
break;
}
};
};
これも自明であるべきです。表示されたフラグメントを変更するスワイプ アクションを監視し、そのインデックスを確認して、適切なタブを選択します。手順 5 のタブ インスタンスを保持しなければならなかった理由は、ここでわかります。タブを選択するには、それらが必要です。
すべてが今すぐ動作するはずです。