2016-04-18 55 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(); 

但返回空。我知道這是一個新的Fragment實例,但我不確定給它什麼價值。任何幫助將非常感激。

+1

你的'View'不應該直接與'FragmentManager'交互。相反,創建一個你的'Activity'可以實現的接口,通過這個接口你的'View'可以表示遊戲已經完成,並且在Activity的接口方法中執行'FragmentTransaction'。 –

+0

所以像父視圖中的靜態方法,並稱它爲信號遊戲已完成(並繼續我的片段)? – Brian

+0

不可以。您不能從'static'方法訪問'FragmentManager',而沒有一些不穩定的參數中繼。使用「接口」。 –

回答

4

,如果您的視圖連接到一個Activity那麼簡單,你可以做

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

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

而且更安全,請確保您覈對的View Context是實例Activity通過這樣做:

if(getContext() instanceof Activity)// do something 

更好的解決方案是,我依靠ViewActivity之間的回調。

+0

現在它是'((AppCompatActivity)getContext())。getSupportFragmentManager()'。 – CoolMind

相關問題