2016-09-29 31 views
0

現在、新しいフラグメントを呼び出すには、.add(R.id.container, fragment)または.replace(R.id.container, fragment)を使用しています。フラグメントのコンテナビューのIDが発生する可能性のある問題

と私は単に置き換えるID固定し

見つかりクラッシュ

java.lang.IllegalArgumentExceptionがいいえビューに直面

.add(R.id.container, fragment)

.add(((ViewGroup)getView().getParent()).getId(), fragment)にI私は私のアプリでavでどこにでも((ViewGroup)getView().getParent()).getId()を使うことを考えていますoidその他のクラッシュ

いいですか?このアプローチを使用すると、どの問題が発生する可能性がありますか?それは安全ですか?より良いアプローチはありますか?

+0

とは何ですか?あなたは子フラグメントを使っていますか?...あなたの 'package.R'と' android.R'を混在させませんでしたか? – Selvin

答えて

1

より良いアプローチがある:

追加/断片を置換、まず

コンテナがnullであるかどうかをチェックして、トランザクションを実行しようとしています。

  FragmentManager fragmentManager = getActivity().getSupportFragmentManager(); 

      FrameLayout frame=(FrameLayout)getActivity().findViewById(R.id.reg_frame_container); 

      if(frame!=null) { 
       fragmentManager.beginTransaction().replace(R.id.reg_frame_container, new SecurityQuestions()).commit(); 

      } 
      else { 
       fragmentManager.beginTransaction().replace(R.id.frame_container_menu, new SecurityQuestions()).commit(); 

      } 

OR

あなたはそれが正常に動作するかどうか、あなたのメソッドを使用しますが、null状態をチェックすることを忘れないでくださいことができます。

この作品は私のためのものです。

希望するもの:

関連する問題