2017-08-09 33 views
1

我需要檢查當前顯示的片段,以避免同樣的片段類的重新開張如何instanceof運算符使用的片段與

要啓動片段中使用代碼:

private Class mFragmentClass; 

mFragmentClass = InfoFragment.class; 

if (null != mFragmentClass) { 
    try { 
    mFragment = (Fragment) mFragmentClass.newInstance(); 
    FragmentManager fragmentManager = getSupportFragmentManager(); 
    fragmentManager.beginTransaction().replace(R.id.content_navigation_menu, mFragment).commit(); 
    } catch (InstantiationException exception) { 
    exception.printStackTrace(); 
    } catch (IllegalAccessException exception) { 
    exception.printStackTrace(); 
    } 
} 

需要檢查當前顯示的片段:

if(mFragment instanceof (Fragment)mFragmentClass.newInstance()) 

是給編譯時間錯誤

[),預計,類型預期]

+1

instanceof運算符的Java是用來測試對象是否是的一個實例指定類型。它期望一個類。 可能的重複:https://stackoverflow.com/questions/9294603/get-currently-displayed-fragment – Swati

回答

1

嘗試此檢查只在運行時已知類型:

mFragmentClass.isInstance(mFragment) 
+0

這是我期待的。謝謝你。 – Jeelan

0

你可以在你的活動的靜態字符串,你要打開的片段

public static String currentFragment = ""; 

然後在每一個片段的onResume你可以給的名字像這樣的字符串片段

MainActivity.currentFragment = "currentFrag"; 

然後,您可以隨時檢查它。

0

你可以做這樣的:if (mFragment instanceof mFragmentClass)