Странное связывание данных в Android - PullRequest
0 голосов
/ 19 сентября 2018

Я пытаюсь выяснить, как работать с привязкой данных в 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 isпросто пустой класс на данный момент.

Ответы [ 2 ]

0 голосов
/ 30 января 2019

Я тоже столкнулся с этим.Спасибо tynn за ответ на мой вопрос .

Согласно Tynn, это потому, что мы не следовали соглашениям о присвоении имен оракулам для пакетов.Имя пакета должно быть в нижнем регистре.Изменение "ViewModels" на "viewmodels" исправило это для меня.

0 голосов
/ 19 сентября 2018

Расширение MainViewModel с ViewModel

public class MainViewModel extends ViewModel {

}

Читать о LiveData

...