我的活动中有这段代码
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Fragment workerfragment = new XMLworker();
android.app.FragmentManager fm= getFragmentManager();
FragmentTransaction fragtrans = fm.beginTransaction();
fragtrans.add(workerfragment, "work");
fragtrans.commit();
}
片段名称是XMLWorker。它没有UI,我用它来解析一些xmls。
在我的代码的这一行
fragtrans.add(workerfragment, "work");
我收到错误
FragmentTransaction类型中的方法add(Fragment,String)不适用于参数(Fragment,String)。
为什么呢?我究竟做错了什么?
编辑: 是因为我正在使用
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
...
答案 0 :(得分:2)
FragmentTransaction类型中的方法add(Fragment,String)是 不适用于参数(Fragment,String)。
错误表示类型不匹配:
在您的情况下,fragtrans
引用支持包中的Fragment
到workerfragment
时的原生Fragment
支持。
检查你的导入。您正在使用来自support package
和本地片段的片段的混合导入。
而不是
android.app.FragmentManager fm= getFragmentManager();
你应该使用
FragmentManager fm = getSupportFragmentManager();
答案 1 :(得分:0)
您正在将标准的内置Fragment
API与support.v4 API混合使用,这些API仅应用于定位较旧Android版本的应用程序(顾名思义是API版本4+)。
答案 2 :(得分:0)
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
binding = DataBindingUtil.inflate(inflater, R.layout.my_layout, container, false)
...
binding.root.visibility = View.GONE
return binding.root
}
GL