Skip to content

Instantly share code, notes, and snippets.

@yesitskev
Created May 21, 2016 14:52
Show Gist options
  • Save yesitskev/adbd946bda2f710d86c46dda889f124f to your computer and use it in GitHub Desktop.
Save yesitskev/adbd946bda2f710d86c46dda889f124f to your computer and use it in GitHub Desktop.
The menu methods (onCreateOptionsMenu, onPrepareOptionsMenu, onOptionsItemSelected) are never invoked for both controllers. Also, when pressing the default back button, the controller is popped but it's view still lingers on screen.
package com.kevelbreh.fit.demo;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import com.bluelinelabs.conductor.ChangeHandlerFrameLayout;
import com.bluelinelabs.conductor.Conductor;
import com.bluelinelabs.conductor.Router;
import com.bluelinelabs.conductor.RouterTransaction;
import com.bluelinelabs.conductor.changehandler.FadeChangeHandler;
import com.bluelinelabs.conductor.rxlifecycle.RxController;
import com.kevelbreh.fit.R;
import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
import timber.log.Timber;
public class DemoActivity extends AppCompatActivity {
@BindView(R.id.toolbar) Toolbar toolbar;
@BindView(R.id.controller_container) ChangeHandlerFrameLayout container;
private Router router;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
setSupportActionBar(toolbar);
ButterKnife.bind(this);
router = Conductor.attachRouter(this, container, savedInstanceState);
if (!router.hasRootController()) {
router.setRoot(new DemoActivity.HomeController());
}
}
@Override
public void onBackPressed() {
if (!router.handleBack()) {
super.onBackPressed();
}
}
// Menu methods never get invoked.
public static class HomeController extends RxController {
@OnClick(android.R.id.button1)
public void onButtonClicked() {
getRouter().pushController(RouterTransaction.builder(new DemoActivity.SubController())
.pushChangeHandler(new FadeChangeHandler())
.popChangeHandler(new FadeChangeHandler())
.build());
}
public HomeController(Bundle bundle) {
super(bundle);
setHasOptionsMenu(true);
}
public HomeController() {
super(null);
setHasOptionsMenu(true);
}
@NonNull @Override
protected View onCreateView(@NonNull LayoutInflater inflater, @NonNull ViewGroup container) {
View v = inflater.inflate(R.layout.controller_home, container);
ButterKnife.bind(this, v);
return v;
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
inflater.inflate(R.menu.menu_home, menu);
Timber.d("onCreateOptionsMenu");
}
@Override
public void onPrepareOptionsMenu(Menu menu) {
super.onPrepareOptionsMenu(menu);
Timber.d("onPrepareOptionsMenu");
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
Timber.d("onOptionsItemSelected %s", item.getItemId());
return super.onOptionsItemSelected(item);
}
}
// Menu methods never get invoked.
public static class SubController extends RxController {
public SubController(Bundle bundle) {
super(bundle);
setHasOptionsMenu(true);
}
public SubController() {
super(null);
setHasOptionsMenu(true);
}
@NonNull @Override
protected View onCreateView(@NonNull LayoutInflater inflater, @NonNull ViewGroup container) {
return inflater.inflate(R.layout.controller_workout_manage, container);
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
inflater.inflate(R.menu.menu_workout_manager, menu);
Timber.d("onCreateOptionsMenu");
}
@Override
public void onPrepareOptionsMenu(Menu menu) {
super.onPrepareOptionsMenu(menu);
Timber.d("onPrepareOptionsMenu");
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
Timber.d("onOptionsItemSelected %s", item.getItemId());
return super.onOptionsItemSelected(item);
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment