package com.zhuinden.simplestackdemoexample.delegate; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.RelativeLayout; import com.zhuinden.simplestack.BackstackDelegate; import com.zhuinden.simplestack.HistoryBuilder; import com.zhuinden.simplestack.navigator.DefaultStateChanger; import com.zhuinden.simplestackdemoexample.R; import com.zhuinden.simplestackdemoexample.common.BackstackService; import com.zhuinden.simplestackdemoexample.common.FirstKey; import butterknife.BindView; import butterknife.ButterKnife; public class BackstackDelegateActivity extends AppCompatActivity { @BindView(R.id.root) RelativeLayout root; BackstackDelegate backstackDelegate; DefaultStateChanger defaultStateChanger; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ButterKnife.bind(this); backstackDelegate = new BackstackDelegate(null); backstackDelegate.onCreate(savedInstanceState, // getLastCustomNonConfigurationInstance(), // HistoryBuilder.single(new FirstKey())); defaultStateChanger = DefaultStateChanger.configure() .setStatePersistenceStrategy(new DefaultStateChanger.StatePersistenceStrategy() { @Override public void persistViewToState(@NonNull Object previousKey, @NonNull View previousView) { backstackDelegate.persistViewToState(previousView); } @Override public void restoreViewFromState(@NonNull Object newKey, @NonNull View newView) { backstackDelegate.restoreViewFromState(newView); } }) .create(this, root); backstackDelegate.setStateChanger(defaultStateChanger); } @Override public Object onRetainCustomNonConfigurationInstance() { return backstackDelegate.onRetainCustomNonConfigurationInstance(); } @Override protected void onPostResume() { super.onPostResume(); backstackDelegate.onPostResume(); } @Override public void onBackPressed() { if(!backstackDelegate.onBackPressed()) { super.onBackPressed(); } } @Override protected void onPause() { backstackDelegate.onPause(); super.onPause(); } @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); backstackDelegate.persistViewToState(root.getChildAt(0)); backstackDelegate.onSaveInstanceState(outState); } @Override protected void onDestroy() { backstackDelegate.onDestroy(); super.onDestroy(); } @Override public Object getSystemService(String name) { if(name.equals(BackstackService.TAG)) { return backstackDelegate.getBackstack(); } return super.getSystemService(name); } }