как создать экземпляр ViewModel в AndroidX? - PullRequest
0 голосов
/ 22 января 2019

Я хочу инициализировать ViewModel в Activity, используя библиотеку androidx

Я пробовал, что говорит документация, но она не работает. ".of" не разрешен.

import androidx.appcompat.app.AppCompatActivity

import android.os.Bundle import androidx.databinding.DataBindingUtil import androidx.lifecycle.ViewModelProvider import com.example.myapplication.databinding.ActivityMainBinding

class MainActivity: AppCompatActivity () {

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    val binding: ActivityMainBinding = DataBindingUtil.setContentView(
        this, R.layout.activity_main)
    binding.setLifecycleOwner(this)

    var model = ViewModelProvider.of(this).get(SheduleViewModel::class.java)

}

}

из не разрешен, может быть есть другой способ сделать это в androidx

Ответы [ 2 ]

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

(Как сделать) Использовать ViewModel из Компонент архитектуры Android :

  1. Добавить репозиторий Google Maven (Необязательно), просто убедитесь, что)

    Проекты Android Studio не настроены для доступа к этому хранилищу по умолчанию.

    Чтобы добавить его в свой проект, откройте файл build.gradle для своего проекта. (не для вашего приложения или модуля) и добавьте репозиторий google(), как показано ниже:

    allprojects {
        repositories {
            google()
            jcenter()
        }
    }
    
  2. Объявление зависимостей

    Откройте файл уровня приложения build.gradle,

    Перейдите к dependencies{} block

    Put implementation "androidx.lifecycle:lifecycle-viewmodel:$lifecycle_version"для AndroidX версии, $ lifecycle_version здесь определена последняя версия.

    Для Pre-AndroidX используйте implementation "android.arch.lifecycle:viewmodel:1.1.1" (1.1.1 - последняя версия этого артефакта, я думаю.)

  3. В своей деятельности используйте такой синтаксис

    Импортировать этот класс:

    import androidx.lifecycle.ViewModelProviders; для АндроиDX

    import android.arch.lifecycle.ViewModelProviders; при использовании Pre-AndroidX

    И получите ViewModel, как следует

    ViewModelProviders.of(this).get(ProfileObservableViewModel::class.java) // Kotlinсинтаксис

    ---- или ----

    ViewModelProviders.of(this).get(ProfileObservableViewModel.class); // синтаксис Java

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

Добавьте зависимость androidx.lifecycle:lifecycle-extensions:$lifecycleExtensionsVersion для импорта ViewModelProviders.

...