2012-03-19 13 views
0

私はアンドロイド3.0+やアクションバーで作業していないので、アクションバーに実装できるタブについて質問があります。それは断片の変化にのみ制限されていますか?タブは:最初のアクティビティ、2番目のフラグメント?私がチェックアウトした例から、アクションバーを持つ主なアクティビティが1つあり、各タブの内容は別個のフラグメントです。申し訳ありませんが、私の質問が明らかなものであれば。あらかじめありがとうございます。アンドロイド3.0+アクションバーのタブ

答えて

2

私は、あなたがそれらのすべてのためにフラグメントを使用して最初にアクティビティを使用する利点を見ませんか?フラグメントは非常に強力で、アクティビティーと同じくらい多くを提供できます。

これは、Tabを選択したときにコールバックを取得できるはずだから、そのコールバックではアクティビティを読み込むだけです。新しいアクティビティをロードするときに、現在選択されているタブを渡して、ユーザーが選択したアクティビティを表示できるようにします。

フラグメントを使用する理由は、新しいアクティビティをロードする必要がなく、現在のフラグメントを新しいコンテンツで置き換えることができるということです。

+0

事がされていることを、私は最初の活動で二つの断片を持つようにしたいということです最初のタブ。したがって、最初のタブにフラグメントを使用すると、そのフラグメントには2つの他のフラグメントが含まれていますか?私はちょっと混乱しています、私もあなたを混乱させないことを願っています。 – Sandra

+0

フラグメントを別のフラグメントに埋め込むことはできません。 – Mimminito

+0

私はそれらをアクティビティに埋め込むべきです。そのアクティビティはアクションバーのタブになる可能性があります。 :S – Sandra

1

フラグメントを切り替えなければならないということはありません。基本コードが簡単にできるように構成されています。

たとえば、タブを使用して、一度ロードしたビューレイアウト階層の要素の表示を変更するだけで、うまく動作します。ビュー階層が複雑ではない場合、断片化トランザクションを排除するので、これはずっと効率的です。おそらく、ビューの可視性を変更することはかなり効率的です。

ここであなたのフラグメントトランザクションを無視して、あなた自身のことを行う方法のアイデアを与えるために、不完全なコードの断片です:

public class AudioManagerTabListener<T extends Fragment> implements 
     ActionBar.TabListener { 
    @Override 
    public void onTabSelected(Tab tab, FragmentTransaction ft) { 
     switch ((Integer) tab.getTag()) { 
     case TAG_SHARED: 
      mGridViewWrapper.setVisibility(View.VISIBLE); 
      break; 
     case TAG_PLAYING: 
      mNowPlayingWrapper.setVisibility(View.VISIBLE); 
      break; 
     case TAG_PLAYLIST: 
      break; 
     case TAG_ARTISTS: 
      break; 
     case TAG_ALBUMS: 
      break; 
     case TAG_SONGS: 
      break; 
     } 
     if (DBG.AUDIO) { 
      Log.d(TAG, 
        "SettingsTabListener- onTabSelected - Tag: " 
          + tab.getText()); 
     } 

    } 

    @Override 
    public void onTabUnselected(Tab tab, FragmentTransaction ft) { 
     switch ((Integer) tab.getTag()) { 
     case TAG_SHARED: 
      mGridViewWrapper.setVisibility(View.GONE); 
      break; 
     case TAG_PLAYING: 
      mNowPlayingWrapper.setVisibility(View.GONE); 
      break; 
     case TAG_PLAYLIST: 
      break; 
     case TAG_ARTISTS: 
      break; 
     case TAG_ALBUMS: 
      break; 
     case TAG_SONGS: 
      break; 
     } 
     if (DBG.AUDIO) { 
      Log.d(TAG, 
        "SettingsTabListener- onTabUnSelected - Tag: " 
          + tab.getText()); 
     } 

    } 

    @Override 
    public void onTabReselected(Tab tab, FragmentTransaction ft) { 
     if (DBG.AUDIO) { 
      Log.d(TAG, "SettingsTabListener- onTabReselected- Position: " 
        + tab.getPosition()); 
     } 
    } 
} 
+0

あなたの答えをありがとう。多分別の状況のことを念頭に置いておきます。今のところ私のレイアウトは複雑になり、各タブごとに別々の断片を作成することで問題を解決しました。 – Sandra

関連する問題