Android 中的奇怪数据绑定

Weird DataBinding in Android

我试图弄清楚如何在 Android 中使用数据绑定,但遇到了一个奇怪的问题。当我将我的 ViewModel class 放在某个包中时,生成的 ActivityMainBinding 看不到它并说:error: package ViewModels does not exist。但是如果我把它放在根包中,那么麻烦就消失了。是我的错误还是某种错误?

代码:

activity_main.xml

<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">

<data>
    <variable
        name="DataContext"
        type="com.example.sombrero.bluem.ViewModels.MainViewModel" />
</data>
...

MainActivity.java

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    ActivityMainBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_main);
    MainViewModel mainViewModel = ViewModelProviders.of(this).get(MainViewModel.class);
    binding.setDataContext(mainViewModel);
}

MainViewModel 目前只是空 class。

ViewModel

扩展 MainViewModel
public class MainViewModel extends ViewModel {

}

Read about LiveData

我运行也喜欢这个。感谢 tynn for answering my

按照tynn的说法,是因为我们没有遵循oracle的包命名规范。包名应该全部小写。将 "ViewModels" 更改为 "viewmodels" 为我修复了它。