2016-04-18 12 views
2

私のカスタムビューでは、単純なゲームを実行するJavaクラスがあります。ゲームが終了したら私はDialogFragmentを表示したいが、getFragmentManager()メソッドは定義されていないようだ。カスタムビュークラスのFragmentManagerへのアクセス

FragmentManager manager = getFragmentManager(); 
Finish finish = new Finish(); 
finish.show(manager, "done"); 

私のようにFragment OBJを通じてマネージャを取得しようとしました:

Fragment fragment = new Fragment(); 
FragmentManager manager = fragment.getFragmentManager(); 

しかし、それはのようにnullを返します。私はそれが新しいFragmentインスタンスであることを知っていますが、私はそれを与えるためにどのような価値があるか分かりません。どんな助けでも大歓迎です。あなたのビューがActivityに添付されている場合

+1

あなたの 'View'は' FragmentManager'と直接対話するべきではありません。代わりに、あなたの 'Activity'が実装できるインターフェースを作成します。これにより、' View'はゲームが完了したことを知らせ、 'Activity'のインターフェースメソッドで' FragmentTransaction'を行います。 –

+0

親ビューでは静的メソッドのようなものがあり、ゲームを知らせるためにそれを呼び出すと終了します。 – Brian

+0

いいえ、あなたは 'static'メソッドから' FragmentManager'にアクセスすることはできません。何らかの不安定なパラメータの中継はありません。 'interface'を使います。 –

答えて

4

その後、単にあなたが

((Activity)getContext()).getFragmentManager(); 

または

((ActivityCompat)getContext()).getSupportFragmentManager(); 

を行うことができ、より安全であることを必ずView Contextのに対してチェックしてくださいインスタンスであります

if(getContext() instanceof Activity)// do something 
このようにすれば、 Activity

より良い解決策は、私はViewActivityの間のコールバックに頼っていました。

+0

これは '((AppCompatActivity)getContext())。getSupportFragmentManager()'です。 – CoolMind

関連する問題