2

我的活动中有此代码

@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,我用它来解析一些 xml。

在我的代码的这一行

 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;

??

4

3 回答 3

2

FragmentTransaction 类型中的方法 add(Fragment, String) 不适用于参数 (Fragment, String)。

该错误意味着类型不匹配:

在您的情况下fragtrans,指的是本地Fragment支持,而workerfragment来自 Fragment支持包。检查你的进口。您正在使用混合导入的片段support package和本机片段。

代替

 android.app.FragmentManager fm= getFragmentManager();

你应该使用

FragmentManager fm =  getSupportFragmentManager();
于 2013-07-15T09:18:42.943 回答
0

您将标准的内置FragmentAPI 与 support.v4 API 混为一谈,这些 API 仅应用于针对旧 Android 版本的应用程序(顾名思义,API 版本 4+)。

于 2013-07-15T09:27:53.243 回答
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
}

总帐

资源

于 2020-03-17T19:05:57.520 回答