【问题标题】:Weird DataBinding in AndroidAndroid中奇怪的数据绑定
【发布时间】:2019-02-23 00:51:45
【问题描述】:

我试图弄清楚如何在 Android 中使用数据绑定,但遇到了一个奇怪的问题。当我将 ViewModel 类放入某个包中时,生成的 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 现在只是一个空类。

【问题讨论】:

    标签: java android data-binding android-databinding


    【解决方案1】:

    我也遇到过这个。感谢tynn 回复我的question

    根据 tynn 的说法,这是因为我们没有遵循 oracle 对包的命名约定。包名应该全部小写。将“ViewModels”更改为“viewmodels”为我修复了它。

    【讨论】:

      【解决方案2】:

      ViewModel扩展MainViewModel

      public class MainViewModel extends ViewModel {
      
      }
      

      Read about LiveData

      【讨论】:

      • 是的,我这样做了,否则 ViewModelProviders 不起作用。
      猜你喜欢
      • 2016-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-06
      • 2018-05-17
      • 2013-11-17
      • 1970-01-01
      相关资源
      最近更新 更多