2015-10-14 51 views
0

我有一個簡單的檢查,以確保相同的片段不會被添加兩次到我的堆棧,假設在菜單項點擊。Proguard和getSimpleName()

public void addFragment(Fragment fragmentToBeAdded){ 
    Fragment topFragment = getCurrentTopFragment(); 
    //getCurrentTopFragment returns top visible fragment using findFragmentById 
    if(!fragmentToBeAdded.getClass().getSimpleName() 
    .equals(topFragment.getClass().getSimpleName()){ 
     //add fragmentToBeAdded 
    } 
} 

現在,第一個問題當然是第一個問題是這種方法是不正確的?另外,它如何導致一個潛在的bug是當proguard改變爲不同類的「簡單名稱」爲同一個字母時。這個邏輯在發佈版本中也有所折騰。幸運的是,沒有發佈。

如果所有的基本方法都是正確的,事後的選擇是使用getName()而不是getSimpleName()或使用instanceOf檢查。請讓我知道在這裏可以糾正哪些問題。

回答

0

我認爲這只是一種錯誤的做事方式。有一個原因完全合格的類名是首選,它是唯一的。此外,我應該去一個instanceOf檢查,這可能比字符串文字更好。