LiveData 是抽象的 android

Ide*_*dee 7 android android-livedata android-architecture-components

我尝试初始化我的 LiveData 对象,但它给出了错误:“LiveData 是抽象的,无法实例化”

LiveData listLiveData = new LiveData<>();

E.M*_*.M. 6

在 ViewModel 中,您可能想使用MutableLiveData它。

例如:

class MyViewModel extends ViewModel {
  private MutableLiveData<String> data = new MutableLiveData<>();

  public LiveData<String> getData() {
    return data;
  }

  public void loadData() {
    // Do some stuff to load the data... then
    data.setValue("new data"); // Or use data.postValue()
  }
}
Run Code Online (Sandbox Code Playgroud)

或者,在 Kotlin 中:

class MyViewModel : ViewModel() {
  private val _data = MutableLiveData<String>()
  val data: LiveData<String> = _data

  fun loadData() {
    viewModelScope.launch {
      val result = // ... execute some background tasks
      _data.value = result
    }
  }
}
Run Code Online (Sandbox Code Playgroud)


Lew*_*ren 4

由于它是抽象的(如 @CommonsWare 所说),您需要将其扩展为子类,然后根据形式重写方法:

public class LiveDataSubClass extends LiveData<Location> {

}
Run Code Online (Sandbox Code Playgroud)

请参阅文档了解更多详细信息