1

私のアプリケーションでは、5個のアイテムを持つナビゲーションドロワーを作成しました。アイテムがナビゲーション・ドロワーでクリックされると、正しくフラグメント・マネージャーを使用してアイテムをチェックして表示できます。 しかし、現在私が持っている三つの問題:フラグメントにリンクされたAndroidナビゲーションドロワーのアイテム

  1. 私のアプリケーションが浮動しているアクションボタン、もちろんアクションを実行して、新しい断片を開くので、私のように設定し、あまりにナビゲーション引き出しの中に「フラグメントが変化する」ことを処理するために必要とします示された断片に対応する現在の項目をチェックしました。

    • Iは OF SORTは、この問題を解決するが、 はMainActivity及びその間 チェック新しいアイテムに断片トランザクションを実行する単一の方法を使用して。したがって、あるフラグメントが別の フラグメントを呼び出す場合は、nav_drawer_item_idを パラメータとして渡してこの関数を使用します。私はこの解決策が駄目だと思うので、もしあなたが良いアイデアを持っていれば、本当に歓迎すべきことです!
  2. 私の最大の問題は、

      、フラグメントは戻って、以前のものにポップする場合、ユーザープレスAndroidの戻るボタン(または時々私は、その特定の断片で行われていますので、私はプログラム的に)(popback呼びます)ということです
    • 私は本当にこの問題を解決する方法を知りません。なぜなら、フラグメントがポップされたら、ナビゲーションドロワーの正しいアイテムをチェックすることができないからです。
  3. 「アンドロイドルール」を尊重するために、ナビゲーションドロワーが閉じられたら、新しいフラグメントを表示する必要があります。
    • ナビゲーション・ドロワーonNavigationItemSelectedListener内に「nextFragment」を設定し、ドロワーのonDrawerClosed内に新しいフラグメントを表示することで、この問題を解決しました。唯一の解決策ですか?私はナビゲーションドロワーを含む単一の活性を有する

私はそれが本当に見られることに値していないため、任意のコードを投稿していないよので、ここでいくつかの追加情報です現在フラグメントトランザクションを処理しています。

  • 私は6つの断片を持っていますが、5つはナビゲーション引き出しから呼び出され、もう1つは他のUIコンポーネントからのみ呼び出されますが、これはもちろん引き出しで確認する必要はありません。
    • 「解決済みのアイテムをチェックする」のようなものでしたが、適切なアイテムを設定するために、ナビゲーション・ドロワーをフラグメントから取得する方法が見つかりませんでしたチェック
  • 答えて

    0

    何かがバックスタックからポップし、コールバックからナビゲーション引き出しを同期されるたびに通知を受け取るためにあなたの活動のFragmentManager.OnBackStackChangedListenerを実装します。これは、戻るボタンを押したときに発生する問題を取り除くはずです。

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.activity_main); 
    
        ..... 
    
        getSupportFragmentManager().addOnBackStackChangedListener(this); 
    } 
    
    @Override 
    public void onBackStackChanged() { 
    
        // Get the currently active fragment 
        Fragment fragment = 
         getSupportFragmentManager().findFragmentById(R.id.fragments_frame); 
    
        // Check which fragment is active, check the 
        // correct selection and set the title accordingly 
        if (fragment instanceof FragmentAtPosition0) { 
         setCheckedAndTitle(0); 
        } else if (fragment instanceof FragmentAtPosition1) { 
         setCheckedAndTitle(1); 
        } 
    } 
    
    private void setCheckedAndTitle(int position) { 
        MenuItem item = navView.getMenu().getItem(position); 
        item.setChecked(true); 
        setTitle(item.getTitle()); 
    } 
    

    あなたが言及した他の2つのケースについては、あなたが言及した解決策が好ましい方法だと思います。

    関連する問題