2016-12-20 1 views
1

自分のカードゲームアプリでFragmentの多くを切り替えることができます。フラグメントのUXの選択と汎用性

私のユーザーは、彼は次の断片を通過デッキ作成:

デッキリストフラグメント(「新しいデッキ」をクリック) - >クラスの選択フラグメント(メイジ、戦士など) - >名前選択部分 - >に戻るデッキリスト新しいデッキが記載されています。

私はスムーズなデッキの作成プロセスを持つためにこれを行うが、ここで私の二つの質問です:

1)それはUXが良いとスムーズに行う場合には、必要以上Fragment Sを使用することを推奨していますか?私は順番に次の操作を行う

2)注Fragmentを切り替えるには:

Fragment fragment = new MyFragment(); 

FragmentManager fragmentManager = getActivity().getSupportFragmentManager(); 
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 

// Set argument(s) - Not all fragments set arguments 
Bundle args = new Bundle(); 
args.putString("deckName", deckName); 
fragment.setArguments(args); 

fragmentTransaction.replace(R.id.content_frame, fragment); 
fragmentTransaction.addToBackStack(null); 
fragmentTransaction.commit(); 

をする代わりに、他の1つのFragmentから同様の方法を有するので、私は可変量をとるジェネリックメソッドを作成したいですパラメータおよびFragmentのタイプを作成し、前記Fragmentに切り替える。

しかし、私はそれを行う方法を理解できないようです。

この長い投稿をお許しいただきありがとうございます。

答えて

0

私のコードをチェックアウト:フラグメントのメソッド上記

public class MainActivity extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     replaceFragment(new HomeFragment()); 
    } 


     public void replaceFragment(final Fragment fragment) { 
       getFragmentManager() 
         .beginTransaction() 
         .replace(R.id.container, fragment, fragment.getClass().getSimpleName()) 
         .commit(); 
      } 

      public void addFragment(final Fragment fragment) { 
       final Fragment hideFragment = getFragmentManager().findFragmentById(R.id.container); 
       getFragmentManager() 
         .beginTransaction() 
         .add(R.id.container, fragment, fragment.getClass().getSimpleName()) 
         .hide(hideFragment) 
         .addToBackStack(hideFragment.getClass().getSimpleName()) 
         .commit(); 
      } 
    } 

コール:

final HomeFragment homeFragment = new HomeFragment(); 
    final Bundle bundle = new Bundle(); 
    bundle.putString("KEY","VALUE"); 
    homeFragment.setArguments(bundle); 
    ((MainActivity) getActivity()).addFragment(homeFragment); 
+0

を私たちも、パラメータはあなたの方法に '文字列... params'パラメータを指定して、一般的な追加作ることができます右? とにかくあなたの答えをありがとう –

関連する問題