3

私はアンドロイドデベロッパーサイトで見つけたタブナビゲーションにActionBarSherlockthis patternを適用しています。それはかなりうまくいっていますが、タブとフラグメント間の関連性を維持してNAVIGATION_MODE_TABSNAVIGATION_MODE_LISTの間で切り替えることもできます。タブナビゲーションとリストナビゲーションの切り替え

上記のパターンは、一般的なコードを保存するのにはかなり良いです。だから、私はタブにリスナーを追加し、このような特定のフラグメントに関連付ける:

bar.addTab(bar.newTab() 
.setText("MyFragment") 
.setTabListener(new TabListener<SomeFragment>(this, "myfargment", SomeFragment.class))); 

をし、関連するタブがジェネリック医薬品の助けを借りて、クリックされたときの断片をインスタンス化:

public void onTabSelected(Tab tab, FragmentTransaction ft) { 
    if (mFragment == null) { 
     mFragment = Fragment.instantiate(mActivity, mClass.getName(), mArgs); 
     ft.add(android.R.id.content, mFragment, mTag); 
    } else { 
     ft.attach(mFragment); 
    } 
} 

私の質問がありますどうすれば同様の方法で達成できますか?リストのナビゲーションのモード間で移動します。 ActionBarのリストのOnNavigationListener全体リストの代わりにの代わりにのtablistenerのように動作するので、私は同様の方法を見つけることができませんでした。

かは、私がこのような何かを持っている:

@Override 
public boolean onNavigationItemSelected(int itemPosition, long itemId) { 
    switch (itemPosition) { 
    case 0: 
    //Replace the current fragment with FragmentA 
     break; 
    case 1: 
    //Replace the current fragment with FragmentB 
     break; 
    case 2: 
    //Replace the current fragment with FragmentC 
     break; 
    default: 
     break; 
    } 
    return true; 
} 

編集:私は置けばナビゲーションモードNAVIGATION_MODE_TABSに設定されている間 :私は面白い行動に気づいた

私の携帯電話の風景モードでは、タブをリストに変換し、preservers preserversのフレグメンの間にリスト項目(の前のタブ項目でした)どのようにしてのではなくの順番変更ではなく、この結果を得ることができますか?

答えて

1

タブモードで手動でリストナビゲーションに設定していると考えられません。私は、 "Large"バケツの下に落ちたときに、私のアプリケーションの1つにセットされたリストナビゲーションを持っています。

OnNavigationListener mNavigationListener = new OnNavigationListener() 
{ 
int mLastPosition = -1; 

@Override 
public boolean onNavigationItemSelected(int itemPosition, long itemId) 
{ 
    String selectedTag = mFragmentNames.get(itemPosition); 

    FragmentManager fm = getSupportFragmentManager(); 
    Fragment fragment = fm.findFragmentByTag(selectedTag); 
    FragmentTransaction ft = fm.beginTransaction(); 

    /** Used to avoid the same fragment being reattached. */ 
    if(mLastPosition != itemPosition) 
    { 
    /** Means there was a previous fragment attached. */ 
    if(mLastPosition != -1) 
    { 
     Fragment lastFragment = fm.findFragmentByTag(mFragmentNames.get(mLastPosition)); 
     if(lastFragment != null) 
     ft.remove(lastFragment); 
    } 

    if(fragment == null) 
    { 
     /** The fragment is being added for the first time. */ 
     fragment = Fragment.instantiate(HomeActivity.this, selectedTag); 
     ft.add(R.id.rootLayout, fragment, selectedTag); 
     ft.commit(); 
    } else 
    { 
     ft.attach(fragment); 
     ft.commit(); 
    } 
    } 
    /** 
    * The newly attached fragment will be the last position if changed. 
    */ 
    mLastPosition = itemPosition; 

    return true; 
} 
}; 

変数mFragmentNamesは、フラグメント名の元に、整数位置をマップHashMapのである:これは、私は、ナビゲーション・リスナーを使用しています方法です。 "com.android.myproject.MyFragment"

私はこれが役に立ちそうです。

関連する問題