在没有UI的情况下启动片段

时间:2013-07-15 09:16:10

标签: android android-fragments

我的活动中有这段代码

@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;

...

3 个答案:

答案 0 :(得分:2)

  

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

错误表示类型不匹配:

在您的情况下,fragtrans引用支持包中的Fragmentworkerfragment时的原生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

Source