通用方法在将其作为参数传递时不会识别通用类型

时间:2014-08-03 07:56:44

标签: android generics

我试图生成动态片段实例化:

private <F extends Fragment> void addFragment(F fragment) {
    fragment.setArguments(new Bundle());
    FragmentTransaction tx = getFragmentManager().beginTransaction();
    tx.add(R.id.container, fragment);
    tx.submit();
}

但是,编译器会拒绝tx.add(R.id.container, fragment),因为add(int, F)没有方法签名!

如何让add()方法理解F确实是片段?

提前致谢:)

1 个答案:

答案 0 :(得分:5)

这是因为你在类中导入了一个错误的Fragment,它与add方法的fragment参数不兼容。

因为你使用了getFragmentManager(),这意味着你需要使用片段的非支持库来使泛型与add方法兼容。

确保您的导入是这样的:

import android.app.Fragment;