Created
May 21, 2016 14:52
-
-
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.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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