2012-06-03 69 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