すべての新しいActionBarおよびFragmentsAPIのハンドルを取得しようとしています。メインアクティビティがあり、2つの異なるタブを管理する必要があります。ICSより古いバージョンをサポートするためにActionBarSherlockを使用しています。
各タブには独自のタブが含まれていますFragment
(それぞれがのサブクラスですSherlockListFragment
)基本的にうまく機能するようになりましたが、それが愚かであると確信しているという問題がありますが、まだ理解できません:
各フラグメントが最初に表示されるときは、すべてがOKであり、リストにデータが入力されているため、アクションバーのMenuItemsが表示されます。
ただし、2回目にタブが表示されたとき(スウィッチとスイッチバックの後)、リストもActionBarMenuItemsも入力されません。
これが私がタブを切り替える方法です:
@Override
public void onTabSelected(Tab tab, FragmentTransaction transaction) {
SherlockListFragment toAttach = // Find the right fragment here...
if (toAttach != null) {
if (toAttach.isAdded() == false) {
transaction.add(R.id.tab_placeholder, toAttach,
REMINDER_FRAGMENT_TAG);
} else {
transaction.attach(toAttach);
}
}
}
そしてonTabUneselect私はフラグメントを切り離しています:
@Override
public void onTabUnselected(Tab tab, FragmentTransaction transaction) {
SherlockListFragment toDetach = // Find the right fragment
if (toDetach != null) {
transaction.detach(toDetach);
}
}
onResumeにリストとActionBarメニューを入力しています。
@Override
public void onResume() {
super.onResume();
setHasOptionsMenu(true);
fillRemindersList();
}
onStartとonCreateViewでも試してみましたが、役に立ちませんでした...
だから私はここで何が欠けていますか?そして、私のコードに私が気付いていない他の問題がある場合は、教えてください。
ありがとう!
編集:
タブを切り替えた後、呼び出されないことを確認しonResume
ました。これは、タブを取り外して再度取り付けるため、明らかに間違っています...タブを間違った方法で切り替えていますか?