私は何年も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
をメインNavigationDrawer
Fragments
の各1つの中からプッシュされています。メインの各スクリーンには、以下に示すような複数のサブスクリーンがあります。
Drawer __ Fragment 1.0 -- Fragment 1.1 -- Fragment 1.2
|__ Fragment 2.0 -- Fragment 2.1 -- Fragment 2.2
私はこのような、前Fragment
ActionBar
メニューからこれらの内部Fragments
をプッシュしています:私はいくつかの問題に直面していると私は、このアプローチについていくつかのアドバイスを探しています理由です
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
OrderCreateFragment fragment = new OrderCreateFragment();
fragmentTransaction.add(R.id.content_frame, fragment);
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
:
ActionBar
のメニュー項目を正しく管理する方法がわかりません。すべてのFragment
は、独自のメニューを持っており、時には彼らは(すなわち。Androidのバックキーで帰るの代わりにNavigationDrawer
をタップしてFragments
を切り替える場合)バーで立ち往生しているNavigationDrawer
のいずれかのオプションを選択するときStackBack
は完全にポップする必要があります。私はが何らかの形でスタックに保持されているので私のActionBar
が乱雑なアイテムと関連していると思われます。
だから、誰もが親切に、これは適切なアプローチとどのようにStackBack
とActionBar
で問題に対処するためにあるかどうかをアドバイスをしてくださいできますか?
UPDATE: のSelectItem法にスタック全体をクリアするように見える2つの主要な問題を解決しました。私はまだこのアプローチについて意見を聞くことに興味があります。
これは私が実際に従ったのと同じチュートリアルです。簡単な例ではうまくいきますが、大きなプロジェクト(つまり、1つのアクティビティとそこから追加/置換されたすべてのフラグメントを持ち、それぞれのナビゲーション・ドロワー・オプションにいくつかのレベルがあること) 。私は再びその例を続行することはありません、アプリケーションを正しく動作させるためには、いくつの問題やハックのある回避策を想像することはできません:-( – momo