2015-04-22 68 views
2

在我(現在不推薦)的ActionBarActivity中,我想知道Fragment是什麼,所以我可以在正確的方法中調用一個方法。從活動中獲取當前可見片段

我做它喜歡這一點,但它說我不能與任何3個自定義Fragments的我創建投Fragment

if (requestCode == 99) { 
    Fragment f = getFragmentManager().findFragmentById(R.id.main_frag); 
    if (f instanceof GasFragment) { 
     // call method 
    } else if (f instanceof OilFragment) { 
     // call method 
    } else if (f instanceof VehicleFragment) { 
     // call method 
    } 
} 

我已經添加了每個Fragment標籤名,所以我也研究了「發現fragmenttag「並沒有發現任何東西在那方面。

基本上面的代碼在onActivityResult之內。我收到一個結果,然後執行上面的代碼塊。


注意:上面的代碼是我的第二個方法來完成同樣的事情,但我已經得到了這兩個選項的工作。最初,我在Nav Drawer內部打開了一個SettingsActivity,並使用了startActivityFromResult()。我希望結果在開放的Fragment中被捕獲以調用相關方法。但是,我無法從FragmentonActivityResult()中得出結果,因此我決定在父項的ActionBarActivityonActivityResult()中做上述代碼塊。

如果這個計劃是一個更有效的想法,我也會接受這個答案。

回答

3

我想你所有的片段都從android.support.v4.app.Fragment延伸?

在這種情況下,你必須使用getSupportFragmentManager().findFragmentById(),爲getFragmentManager().findFragmentById()將返回android.app.Fragment

+0

Aaarrgghh !!啞啞啞。謝謝。 – KickingLettuce

0

在你的片段,你需要重寫setMenuVisibility方法和保存傳入的布爾。你看here 現在只實現一個共同的接口在所有片段中,允許活動詢問片段是否可見,然後您可以順便施放它們。

相關問題