9

Drawerすべての活動をどのように共有しますか?

lister: onNavigationItemSelectedofでは、setNavigationItemSelectedListenerを取得idしてそこに移動できます。私が探しているのは次のようなものです:

private void initDrawerLayout() {
    drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);

        NavigationView navView = (NavigationView) findViewById(R.id.navigation_view);
        navView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
            @Override
            public boolean onNavigationItemSelected(MenuItem menuItem) {


        Intent intent;
        int id = menuItem.getItemId();

        switch(id) {

            case R.id.home:
            case R.id.drawer_home:
            // call activity instead of adding/replacing fragment
            return true;

            case R.id.drawer_gallery:
            // call activity instead of adding/replacing fragment
            intent = new Intent(MainActivity.this, GalleryActivity.class);
            startActivity(intent);
            return true;

            case R.id.drawer_about:
            // call activity instead of adding/replacing fragment
            intent = new Intent(MainActivity.this, AboutActivity.class);
            startActivity(intent);
            return true;
        ...
        }
        ...

すべてのmenuItemsadd/replaceを作成できることはわかっていますFragmentが、フラグメントとメモリ管理の処理は大きな苦痛です。

代わりに、選択/クリックするたびmenuItemに を呼び出す必要がありますActivity。つまり、それぞれMainMenuItemが持つ必要がActivityあり、それらは複雑なレイアウトを持つフラグメントを保持します。

私がやりたいのは、各メインメニュー項目をActivityではなく にすること だけFragmentです。

そして、これらすべての活動は同じものを共有できますDrawerNavigation

これは推奨される方法ですか?Fragmentsそれとも、アイテムのクリックに対して常に追加しNavigationDrawerますか??

そこからすべてのアクティビティを追加NavigationViewBaseActivityて拡張する必要がありますか??

サポート デザイン ライブラリに関するこの新しいガイドに従う

4

2 に答える 2

2

このSOの回答を使用して回答を見つけました

延長は正しい方法です。setContentView を正しい方法でオーバーライドするだけです...

于 2015-09-08T12:29:59.067 に答える