5

私は何年もAndroidで仕事をしてきましたが、実際のプロジェクトではFragmentsを初めて使用しました。だから私は少し混乱しています: - PこれはAndroid FragmentsとNavigationDrawerの正しい使い方ですか?

このアプリはNavigationDrawerと4つのメインセクションを持っています。私はLayoutとの内容のFragmentsと置き換えられたただ1つのメインActivityを使用しています。 NavigationDrawerのオプションが選択されると、私はFragmentをインスタンス化し、その内容をViewに入れます。私はこのような何かやっている:

private class DrawerItemClickListener implements ListView.OnItemClickListener { 
    @Override 
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
     selectItem(position); 
    } 
} 

public static int drawerSelectedOption = 0; 
private void selectItem(int position) { 
    drawerSelectedOption = position; 
    Fragment fragment = null; 
    switch (position) { 
     case 0: 
      fragment = new StoresFragment(); 
      break; 
     case 1: 
      //promos 
     case 2: 
      fragment = new TransactionsFragment(); 
      break; 
     case 3: 
      break; 
     case 4: 
      fragment = new Settings(); 
      break; 
    } 

    FragmentManager fragmentManager = getFragmentManager(); 
    fragmentManager.beginTransaction().replace(R.id.content_frame, fragment).commit(); 

    // update selected item and title, then close the drawer 
    mDrawerList.setItemChecked(position, true); 
    setTitle(mSectionTitles[position]); 
    mDrawerLayout.closeDrawer(mDrawerList); 
} 

もっとFragmentsをメインNavigationDrawerFragmentsの各1つの中からプッシュされています。メインの各スクリーンには、以下に示すような複数のサブスクリーンがあります。

Drawer __ Fragment 1.0 -- Fragment 1.1 -- Fragment 1.2 
     |__ Fragment 2.0 -- Fragment 2.1 -- Fragment 2.2 

私はこのような、前FragmentActionBarメニューからこれらの内部Fragmentsをプッシュしています:私はいくつかの問題に直面していると私は、このアプローチについていくつかのアドバイスを探しています理由です

FragmentManager fragmentManager = getFragmentManager(); 
     FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 
     OrderCreateFragment fragment = new OrderCreateFragment(); 
     fragmentTransaction.add(R.id.content_frame, fragment); 
     fragmentTransaction.addToBackStack(null); 
     fragmentTransaction.commit(); 

  1. ActionBarのメニュー項目を正しく管理する方法がわかりません。すべてのFragmentは、独自のメニューを持っており、時には彼らは(すなわち。Androidのバックキーで帰るの代わりにNavigationDrawerをタップしてFragmentsを切り替える場合)バーで立ち往生しているNavigationDrawerのいずれかのオプションを選択するとき
  2. StackBackは完全にポップする必要があります。私はが何らかの形でスタックに保持されているので私のActionBarが乱雑なアイテムと関連していると思われます。

だから、誰もが親切に、これは適切なアプローチとどのようにStackBackActionBarで問題に対処するためにあるかどうかをアドバイスをしてくださいできますか?

UPDATE: のSelectItem法にスタック全体をクリアするように見える2つの主要な問題を解決しました。私はまだこのアプローチについて意見を聞くことに興味があります。

答えて

0

よく、私はアプリケーションのニーズに応じて最良の方法を考えます。 2つのシナリオを考慮して

A-アプリにはナビゲーションドローヤーの要件があります。&ネスト/ディープナビゲーションで複数のアクティビティがあります。 次に、フレームレイアウトとナビゲーションドローアを持つ基本アクティビティを持つことをお勧めします。すべてのアクティビティは、この基本アクティビティから継承/継承されます。 各アクティビティに対して、それぞれのレイアウトを膨張させ、プログラムでbaseActivityのframelayoutコンテナに追加します。
バックスタックナビゲーションが簡単です。

B - アプリケーションにはナビゲーションドローヤーの要件があります。&単層ナビゲーションのみです。 次に、ナビゲーション・ドロワーを持つ単一のアクティビティーでフラグメントを動的に追加および置換するという概念を使用できます。

0

http://developer.android.com/training/implementing-navigation/nav-drawer.html

これは、私は、ナビゲーション引き出しを学ぶために使用されるチュートリアルです。それはかなり有用であることがわかった。それは、引き出しを設定し、それをアイコンにリンクし、ページにフラグメントをアップロードするプロセスをたどります。

+0

これは私が実際に従ったのと同じチュートリアルです。簡単な例ではうまくいきますが、大きなプロジェクト(つまり、1つのアクティビティとそこから追加/置換されたすべてのフラグメントを持ち、それぞれのナビゲーション・ドロワー・オプションにいくつかのレベルがあること) 。私は再びその例を続行することはありません、アプリケーションを正しく動作させるためには、いくつの問題やハックのある回避策を想像することはできません:-( – momo

関連する問題