2017-05-04 9 views
0

私は、私のチームのアプリに2つの異なるホーム画面の中から選択できる機能を追加しています。これらの画面の両方が非常に異なる感触を持っていることに注意してください。ユーザの嗜好に応じて2つの異なるフラグメント間でホームフラグメントを切り替える方法

私の現在のセットアップでは、HomeFragmentという抽象クラスを継承する2つの別々のフラグメントHome1FragmentとHome2Fragmentがあります。ユーザーは設定ページで設定を変更するまで、Home1Fragmentをデフォルトで使用します。

ホームスクリーンとして単独で動作する場合、これらのフラグメントは両方とも実装されており、両方とも正しく動作します。

私の問題は、あるフラグメントから別のフラグメントに切り替えるときに発生します。私は私の目の前で実際のコードせずにその場でそれを書いたので、上記のコードにタイプミスがあるかもしれません

@Override 
public void onBackPressed() { 
    FragmentManager fragmentManager = getFragmentManager(); 

    if(fragmentManager.getBackStackEntryCount() > 1) { 
     fragmentManager.popBackStackImmediate(); 

     int option = getSharedPreferences('**hidden**', MODE_PRIVATE).get('home_screen_option', 0); 
     Fragment fragment = fragmentManager.findFragmentById(R.id.content); 
     if(fragment != null && fragment instanceof HomeFragment) { 
      if(f instanceof Home1Fragment && option == HOME_2) { 
      f = new Home2Fragment(); 
      } else if (f instanceof Home2Fragment && option == HOME_1) { 
      f = new Home1Fragment(); 
      } 
     } 
    } else { 
     finish(); 
    } 
} 

を経由してこれにしようとしました。

+0

コードの問題点は何ですか?フラグメントは表示されませんか? –

答えて

0

実際にコードに新しいフラグメントを設定するわけではありません。

しかし、保存された状態(共有設定の設定など)に基づいた別の方法を選択し、ホーム画面自体で処理します(私が主張するバックスタック操作ではなく)。

オプション1

あなたのホーム画面を別々のActivityことができるかどうかだと思います。そうすれば、に格納された値に基づいてActivityが開始されたときに正しいフラグメントをロードすることができます。

オプション2.

かなり同じことですが、ネストされたフラグメントを使用しています。ホーム画面をFragmentにして、そのレイアウトに子フラグメント用のコンテナを追加します。次に、適切なビューを適切にロードするために、子フラグメントマネージャを使用します。

関連する問題