menu update added

This commit is contained in:
Gavriil Sitnikov 2016-03-15 22:41:24 +03:00
parent d2dbb8494b
commit 5cbefb4f5a
3 changed files with 34 additions and 0 deletions

View File

@ -23,7 +23,10 @@ import android.os.Bundle;
import android.os.Parcelable;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.util.SparseArray;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.ViewGroup;
import rx.Observable;
@ -119,6 +122,17 @@ public class ViewController<TLogicBridge,
return container;
}
/**
* Calls when activity configuring ActionBar, Toolbar, Sidebar etc.
* If it will be called or not depends on {@link Fragment#hasOptionsMenu())} and {@link Fragment#isMenuVisible()}.
*
* @param menu The options menu in which you place your items;
* @param inflater Helper to inflate menu items.
*/
public void onConfigureNavigation(@NonNull final Menu menu, @NonNull final MenuInflater inflater) {
// do nothing
}
/**
* Called when savedInstanceState is ready to be restored.
*

View File

@ -25,6 +25,8 @@ import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.util.Pair;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.FrameLayout;
@ -136,6 +138,8 @@ public abstract class ViewControllerFragment<TState extends Serializable, TLogic
return;
}
setHasOptionsMenu(getParentFragment() == null);
state = savedInstanceState != null
? (TState) savedInstanceState.getSerializable(VIEW_CONTROLLER_STATE_EXTRA)
: (getArguments() != null ? (TState) getArguments().getSerializable(VIEW_CONTROLLER_STATE_EXTRA) : null);
@ -163,6 +167,14 @@ public abstract class ViewControllerFragment<TState extends Serializable, TLogic
activitySubject.onNext(activity);
}
@Override
public void onCreateOptionsMenu(@NonNull final Menu menu, @NonNull final MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
if (viewController != null) {
viewController.onConfigureNavigation(menu, inflater);
}
}
private void onViewControllerChanged(@Nullable final ViewController viewController) {
if (this.viewController != null) {
this.viewController.onDestroy();

View File

@ -98,6 +98,14 @@ public class ViewControllerNavigation<TLogicBridge> extends FragmentNavigation {
addViewControllerToStack(viewControllerClass, null, state, null, transactionSetup);
}
public void pushViewControllerForResult(@NonNull final Class<? extends ViewController<TLogicBridge,
? extends ViewControllerActivity<TLogicBridge>,
? extends StatelessViewControllerFragment<TLogicBridge, ? extends ViewControllerActivity<TLogicBridge>>>> viewControllerClass,
@NonNull final Fragment targetFragment) {
addStatelessViewControllerToStack(viewControllerClass, targetFragment,
viewControllerClass.getName() + ';' + WITH_TARGET_FRAGMENT_TAG_MARK, null);
}
public <TState extends Serializable> void pushViewControllerForResult(@NonNull final Class<? extends ViewController<TLogicBridge,
? extends ViewControllerActivity<TLogicBridge>,
? extends SimpleViewControllerFragment<TState, TLogicBridge, ? extends ViewControllerActivity<TLogicBridge>>>> viewControllerClass,