当前位置:  开发笔记 > Android > 正文

DataBinding在模块中不起作用

如何解决《DataBinding在模块中不起作用》经验,为你挑选了1个好方法。

我在我的应用程序中使用数据绑定.我有一个应用程序模块,数据绑定工作成功.

但是,我也有一个'家庭模块'我试图使用相同的技术,但数据绑定在xml中出错,具有以下内容:

错误:(63,34)没有指定资源类型(在'onClick'上,值为'@ {viewModel :: onButtonClicked}').

我发现这个错误报告表明这是一个问题,但它已被修复.

我看不出代码有任何问题,我认为问题是因为它在库模块中.

我能做些什么才能让它发挥作用?

家里模块

activity_home.xml




    
        
    

    

        

            

        

        

            

            

HomeActivity

public class HomeActivity extends AppCompatActivity {

    private HomeViewModel mHomeViewModel;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        final SensorManager sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
        final CustomSensorManager customSensorManager = new CustomSensorManager(sensorManager);
        mHomeViewModel = new HomeViewModel(customSensorManager);

        setBindingContentView(R.layout.activity_home);

        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
    }

    private void setBindingContentView(@LayoutRes int layoutResID) {
        ActivityHomeBinding binding = DataBindingUtil.setContentView(this, layoutResID);
        binding.setViewModel(mHomeViewModel);
    }
}

HomeViewModel

public class HomeViewModel {

    private CustomSensorManager mSensorManager;

    public HomeViewModel(@NonNull CustomSensorManager sensorManager) {
        mSensorManager = sensorManager;
    }

    public void onButtonClicked(View view) {
        mSensorManager.scan(true);
    }
}

的build.gradle

apply plugin: 'com.android.library'
android {
    compileSdkVersion 25
    buildToolsVersion "25.0.0"

    defaultConfig {
        minSdkVersion 16
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    dataBinding {
        enabled = true
    }
}
dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')

    compile 'com.android.support:appcompat-v7:25.0.0'
    compile 'com.android.support:design:25.0.0'
    compile 'com.android.support.constraint:constraint-layout:+'
}

更新:

可能是一个错误.链接

我的问题:

在此输入图像描述

引擎模块没有UI,因此错过了依赖性,现在很有意义.



1> Mikel Pascua..:

假设您的应用中有这样的多级模块层次结构:

Android中的多级模块层次结构

为了将数据绑定工作到模块A,您必须确保在从根模块到模块A 的整个层次结构中启用数据绑定.

这意味着你必须添加:

dataBinding {
    enabled = true
}

到模块:

应用模块

模块A.

模块B.

重要的是要记住,您还必须启用数据绑定module B,因此涵盖所有路径.

推荐阅读
wangtao
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有