2012-06-03 93 views
3

是否有可能創建一個函數來縮短鑄件,像(僞):我可以縮短劇組嗎?

MyFragment fragment = (MyFragment) getFragmentManager().findFragmentByTag("mytag"); 
//shorten: 
findByTag(MyFragment.class, "mytag"); 


private Fragment findByTag(Class<?> cast, String tag) { 
    return (cast) getFragmentManager().findFragmentByTag(tag); 
} 

回答

1

修復您的代碼如下:

private <F extends Fragment> F findByTag(Class<F> cast, String tag) { 
    return (F) getFragmentManager().findFragmentByTag(tag); 
} 

現在,你可以把它叫做無鑄造:

MyFragment f1 = findByTag(MyFragment.class, "aaaaa"); 
YourFragment f2 = findByTag(YourFragment.class, "bbbbb"); 
+4

這給你一個警告,並可能導致一個'ClassCastException'在別的地方。使用'cast.cast(getFragmentManager()。findFragmentByTag(tag))'會更好,因爲它會在出現問題時立即拋出。 – maaartinus