Я пытаюсь создать некий Repository для хранения данных между событиями жизненного цикла Android приложения. Следую архитектуре паттерна MVVM, также использую Dagger2.
WorkData.java
public class WorkData {
private boolean auth;
public WorkData() {
this.auth = false;
}
public boolean isAuth() {
return auth;
}
public void setAuth(boolean auth) {
this.auth = auth;
}
}
DataRepository.java
import android.arch.lifecycle.MutableLiveData;
import dagger.Provides;
import javax.inject.Singleton;
//SingleTon
@Module
public class DataRepository {
private MutableLiveData<WorkData> mCurrentObject;
@Singleton
@Provides
public MutableLiveData<WorkData> getInstance() {
if (mCurrentObject == null) {
mCurrentObject = new MutableLiveData<>();
mCurrentObject.setValue(new WorkData());
}
return mCurrentObject;
}
}
WorkDataSharedViewModel.java
import android.arch.lifecycle.LiveData;
import android.arch.lifecycle.MutableLiveData;
import android.arch.lifecycle.ViewModel;
public class WorkDataSharedViewModel extends ViewModel {
private final MutableLiveData<WorkData> selected = new MutableLiveData<WorkData>();
private MutableLiveData<WorkData> mCurrentData;
public MutableLiveData<WorkData> getCurrentData() {
if (mCurrentData == null) {
mCurrentData = DataRepository.getInstance();
}
return mCurrentData;
}
public void set(WorkData item) {
selected.setValue(item);
}
public LiveData<WorkData> get() {
return selected;
}
}
MainActivity.java
public class MainActivity extends AppCompatActivity
implements NavigationView.OnNavigationItemSelectedListener {
***
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//init work variables
WorkDataSharedViewModel workData = ViewModelProviders.of(this).get(WorkDataSharedViewModel.class);
workData.set(new WorkData());
***
}
Но при компиляции файла WorkDataSharedViewModel.java возникает ошибка:
non-static method getInstance() cannot be referenced from a static context.
Пожалуйста подскажите, что можно сделать?
Нашёл ошибку в WorkDataSharedViewModel.java, сделал так:
import android.arch.lifecycle.LiveData;
import android.arch.lifecycle.MutableLiveData;
import android.arch.lifecycle.ViewModel;
public class WorkDataSharedViewModel extends ViewModel {
private final MutableLiveData<WorkData> selected = new MutableLiveData<WorkData>();
private MutableLiveData<WorkData> mCurrentData;
public MutableLiveData<WorkData> getCurrentData() {
if (mCurrentData == null) {
DataRepository dataRepository = new DataRepository();
mCurrentData = dataRepository.getInstance();
}
return mCurrentData;
}
public void set(WorkData item) {
selected.setValue(item);
}
public LiveData<WorkData> get() {
return selected;
}
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Приветсвую, есть у меня в коде класс ConfirmDialog, цель которого при нажатии кнопки Продолжить, выполнить действие, а при нажатии отмена, убрать...
При выполнении appendChild появляется следующая ошибка
Сделал расширение, при клике на его иконку всплывает pop-up с кнопкой при нажатии на которую, открываются все ссылки на странице с определенным...