我正在获取已在我实例化搜索片段的行上定义的错误片段。我做错了什么?
private <T extends Fragment> T getInitialFragment(Tab clickedTab) {
switch (clickedTab) {
case TAB_A:
ListFragment fragment = new ListFragment();
return (T)fragment;
case TAB_B:
SearchFragment fragment = new SearchFragment();
return (T)fragment;
}
}
答案 0 :(得分:0)
如果共享范围,则不能对不同的变量使用相同的名称 - 在代码中声明了两次名为fragment
的变量。你不能拥有它,所以重命名,即重新命名为fragmentList
秒至fragmentSearch
或完全抛弃任务,因为没有任何好处:
private <T extends Fragment> T getInitialFragment(Tab clickedTab) {
switch (clickedTab) {
case TAB_A:
return (T)(new ListFragment());
case TAB_B:
return (T)(new SearchFragment());
}
}
您还应该将default
添加到switch
。
答案 1 :(得分:0)
因为switch-case是低谷(所有情况都被访问,直到找到中断/返回)所有情况都具有相同的范围。将第二个片段重命名为fragment2,或者在外部范围中将其定义为T片段;
编辑:迟到。