DataBindingUtil缺少内部类

时间:2017-02-22 20:25:33

标签: android android-databinding

当我尝试使用任何 DataBindingUtil 方法时,例如:

DataBindingUtil.setContentView()

我得到: Canot解析符号'使用的方法'

然后我在 DataBindingUtil 类中检查了DataBindingUtil.class

中有很多遗漏的东西

我像这样编造gradle:

android {
    ....
    dataBinding {
        enabled = true
    }
}

这是我的DataBidingActivity

public class DataBidingActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        DataBidingActivity biding = new DataBindingUtil.setContentView(this, 
        R.layout.activity_data_biding);
    }
}

我的activity_data_biding

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">

</layout>

3 个答案:

答案 0 :(得分:0)

我看到了您的代码,因此我建议您必须将类型DataBidingActivity修改为ActivityDataBidingBinding,因为必须在布局xml名称和类型值之间进行匹配,正如我在回答中所说的那样。

您必须在new之前移除DataBindingUtil关键字。

所以我修改了你的代码。

import com.kick.iot.autohome.R;
import android.app.Activity;
import android.databinding.DataBindingUtil;
import android.os.Bundle;

public class DataBidingActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        //here is my answer
        ActivityDataBidingBinding binding = DataBindingUtil.setContentView(this, 
        R.layout.activity_data_biding);
 }
}

您导入了import android.databinding.DataBindingUtil;吗?

也许您必须声明'xxxBinding'值才能使用DataBindingUtil方法。例如,当您的活动布局名称为activity_main.xml时,您可以创建ActivityMainBinding类型的值。

此类型已由DataBinding Library准备。如果布局xml文件的名称不同,则必须匹配xml的名称和数据绑定类型之间的名称

  

activity_main.xml =&gt; ActivityMainBinding

     

activity_controller.xml =&gt; ActivityControllerBinding

就我而言,我写了这样的代码

ActivityMainBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_main);

答案 1 :(得分:0)

确保添加以下内容

ActivityMainBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_main);

并在activity_main中添加<layout>标记作为根标记

如果你这样做 - 重启你的android工作室

答案 2 :(得分:0)

刚刚通过重新启动Android Studio解决了相同的问题。 :(