2017-10-04 2 views
0

Androidのボトムナビゲーションビューを使用しているときに、自分のアプリケーションのアーキテクチャを構築するための最良の方法についていくつかの情報を得たいと考えています。Android用のアクティビティ/フラグメントアーキテクチャの修正ボトムナビゲーションビュー

現在、私は自分のMainActivityに私のBottomNavigationViewを定義しています。このような感じです。

protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     BottomNavigationView bottomNavigationView = (BottomNavigationView)findViewById(R.id.bottom_navigation); 
     bottomNavigationView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() { 
      @Override 
      public boolean onNavigationItemSelected(@NonNull MenuItem item) { 
       Fragment selectedFragment = null; 

       switch (item.getItemId()){ 
        case R.id.action_home: 
         selectedFragment = HomeFragment.newInstance(); 
         break; 

        case R.id.action_search: 
         selectedFragment = SearchFragment.newInstance(); 
         break; 

        case R.id.action_message: 
         selectedFragment = MessageFragment.newInstance(); 
         break; 

        case R.id.action_profile: 
         selectedFragment = ProfileFragment.newInstance(); 
         break; 
       } 

       FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); 
       transaction.replace(R.id.frame_layout, selectedFragment); 
       transaction.commit(); 
       return true; 
      } 
     }); 

     //Manually displaying the first fragment - one time only 
     FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); 
     transaction.replace(R.id.frame_layout, HomeFragment.newInstance()); 
     transaction.commit(); 

    } 

問題は、私は1つのタブをクリックしたら、それはフラグメントを切り開くことにある、と私はそれらのフラグメントを持っていると思いますが、すなわち(他のフラグメント/活動を開く:

  1. 私は開きますプロフィールタブ( `ProfileFragment`負荷)
  2. 私は、多くのバグに実行した後` ProfileFragment`、これから `SignUpFragment`または` SignUpActivity`負荷からボタンを

をクリックして、私は再しました私のアプリを設計する方法を探しましたが、私は混在した結果を見つけました。誰でもBottomNavigationViewFragmentsと使用する正しい方法を知っていて、その中でfragmentsを読み込めます。さらにActivities/fragmentsをロードできますか?事前に大きな感謝です。

答えて

1

すべてのアプローチは、プロジェクトと達成しようとするものによって異なります。 1つのアクティビティを意味する20個以上のボトムナビゲーションレイアウトで動作するボトムナビゲーションアプリケーションをコーディングする必要がありました。達成したいプロセスは、選択したタブの目的のタブで目的のフラグメントを設定するのとほぼ同じですが、違いは、タブをテーピングするのではなく、フラグメント内のボタンをタップすることです新たな所望の断片と混合する。

タップタブ - >置換フラグメント - >ボタンフラグメント内をクリック - >フラグメントを置換 - など。

replaceを使用しているので、私はすべてのバックプレスで以前のフラグメントに戻ることを前提としているため、慎重にonBackPressイベントを処理する必要があります。私自身、Main Activityには、BackPressの可視フラグメントを聞くインターフェースを実装しました。

関連する問題