5

すべての新しいActionBarおよびFragments APIでハンドルを取得しようとしています。 私は主な活動をしており、2つの異なるタブを管理したいと考えています。 私はICSより古いバージョンをサポートするためにActionBarSherlockを使用しています。フラグメントがデタッチされて再接続された後、フラグメントのonResumeが呼び出されない

は、各タブには、独自のFragment私はそれが基本的に素敵動作するようになった (各1がSherlockListFragmentのサブクラスである)が含まれていますが、私はそれが愚かであると確信している問題を抱えているが、私はそれを把握することはできませんまだ:

それぞれのフラグメントが最初に表示され、すべてがOKで、リストに値が設定され、ActionBarのMenuItemが表示されます。

しかし、2回目に(表示されたスイッチとスイッチバックの後で)タブが表示されても、リストには表示されず、ActionBar MenuItemも表示されません。

これは私がタブを切り替えるてる方法です:

@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でリストやアクションバーのメニューを移入しています:

@Override 
public void onResume() { 
    super.onResume(); 
    setHasOptionsMenu(true); 
    fillRemindersList(); 
} 

私もONSTARTとonCreateViewでそれを試してみましたが、それは助けにはならなかった...

ここで私は何が欠けていますか? 私のコードに他の問題があるとわからない場合は、教えてください。

ありがとうございます!

EDIT:

私はちょうど ...私は取り外しと再取り付け、それらてるので、definetly間違っている、私はタブを切り替えた後onResume dosen'tが呼び出されることを確認した私は、タブの切り替えアム間違った道?

答えて

2

onTabUnselectedとonTabSelectedでtransaction.replaceにtransaction.remove(フラグメント)を使用してみてください: あなたにもサンプルから、ここで使用トリックを見ることができます。

+0

ありがとう、私はList Navigationに切り替えたので、これは答えだと思う。 (私の場合、意味を成し遂げ、完璧に動作します:) –

+0

私の場合、 'FragmentTranaction.commit()'を呼び出す直前にフラグメント#1の 'FragmentTranaction.remove(フラグメント#1)'を呼び出すと、フラグメント#1フラグメント#1に戻るボタンを押すとonPause()... onDestroyView()を呼び出してonCreateView()... onResume()を実行します。 –

0

このコードの外でbeginTransaction()とcommit()を実行すると思いますが、忘れましたか? https://github.com/JakeWharton/ActionBarSherlock/blob/master/samples/fragments/src/com/actionbarsherlock/sample/fragments/FragmentTabs.java

+0

どちらもありません。ご覧のとおり、私はActionBar.TabListenerインターフェイスを実装しています。 TabListenerコールバックでは、FragmentTransactionを使用する準備ができています(つまり、 "beginned")。ドキュメントは明示的に言うように**コミットしません。 さらに、フラグメントはスワップされているので、それはそうではありません。 –

+0

ああ、本当に残念です。 –

関連する問題