私は新しいアンドロイドのアーキテクチャコンポーネントを使用しようとしていますが、私は一瞬混乱しています。フラグメントが再作成されたときにonChange()が2回呼び出される理由
私は
public class BuyViewModel extends ViewModel {
private BuyRepository buyRepository;
private LiveData<Adverts> advertsLiveData;
private boolean isLoading;
private int currentPage;
@Inject
public BuyViewModel(BuyRepository buyRepository) {
this.buyRepository = buyRepository;
}
public void init(int currentPage) {
this.currentPage = currentPage;
if (this.advertsLiveData != null) {
return;
}
Timber.tag("logi").d("BuyViewModel > init -> ");
advertsLiveData = buyRepository.getAdverts(currentPage);
}
public LiveData<Adverts> getAdvertsLiveData() {
return advertsLiveData;
}
}
が
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
buyViewModel = ViewModelProviders.of(this, viewModelFactory).get(BuyViewModel.class);
buyViewModel.init(1);
buyViewModel.getAdvertsLiveData().observe(this, adverts -> {
Timber.tag("logi").d("BuyFragment > onActivityCreated -> ");
assert adverts != null;
adapter.addMoreAdverts(adverts.getResults());
});
setupViews();
}
私LifeCycleFragmentでLiveDataを守っしかし、私は別で、このフラグメントを交換して戻ってこのフラグメントに切り替わったときに、この方法onChange
が二回呼ばれたのViewModelクラスを作成し、 rvAdapter
に同じデータの2つの部分が追加されました。
これを行うためにinorderで行った変更は何でしたか? –
http://joxi.ru/Q2KG4w7f9lRZb2 screenshootへのリンク – kovac777