package com.zhuinden.stack_rx_example;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.FrameLayout;
import com.zhuinden.simplestack.Backstack;
import com.zhuinden.simplestack.HistoryBuilder;
import com.zhuinden.simplestack.navigator.DefaultStateChanger;
import com.zhuinden.simplestack.navigator.Navigator;
import butterknife.BindView;
import butterknife.ButterKnife;
import io.reactivex.disposables.Disposable;
public class MainActivity
extends AppCompatActivity {
@BindView(R.id.root)
FrameLayout root;
Disposable disposable;
DefaultStateChanger defaultStateChanger;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ButterKnife.bind(this);
defaultStateChanger = DefaultStateChanger.create(this, root);
Backstack backstack = Navigator.configure()
.setStateChanger(new NoOpStateChanger())
.setDeferredInitialization(true)
.install(this, root, HistoryBuilder.single(FirstKey.create()));
disposable = RxStackObservable.create(backstack).subscribe(stateChange -> {
if(stateChange.topNewState().equals(stateChange.topPreviousState())) {
return;
}
defaultStateChanger.performViewChange(stateChange.topPreviousState(),
stateChange.topNewState(),
stateChange,
() -> { // no callback to wait for with Rx
});
});
Navigator.executeDeferredInitialization(this);
}
@Override
public void onBackPressed() {
if(!Navigator.onBackPressed(this)) {
super.onBackPressed();
}
}
@Override
protected void onDestroy() {
if(disposable != null) {
disposable.dispose();
disposable = null;
}
super.onDestroy();
}
@Override
public Object getSystemService(String name) {
if(BackstackService.TAG.equals(name)) {
return Navigator.getBackstack(this);
}
return super.getSystemService(name);
}
}