Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7f9b9054 authored by Adam Powell's avatar Adam Powell
Browse files

Add ActionBar tab callback method onTabReselected

onTabReselected is called if an already-selected tab is chosen again.
For many apps this will be a no-op, but some may treat it as a signal
to return to the top level of a given navigation category.

Change-Id: Ic51fbe477b979562f2d848c4070b2016b217a90f
parent ce146d9d
Loading
Loading
Loading
Loading
+15 −0
Original line number Diff line number Diff line
@@ -19972,6 +19972,21 @@
 deprecated="not deprecated"
 visibility="public"
>
<method name="onTabReselected"
 return="void"
 abstract="true"
 native="false"
 synchronized="false"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
<parameter name="tab" type="android.app.ActionBar.Tab">
</parameter>
<parameter name="ft" type="android.app.FragmentTransaction">
</parameter>
</method>
<method name="onTabSelected"
 return="void"
 abstract="true"
+10 −0
Original line number Diff line number Diff line
@@ -470,5 +470,15 @@ public abstract class ActionBar {
         *        will be executed in a single transaction.
         */
        public void onTabUnselected(Tab tab, FragmentTransaction ft);

        /**
         * Called when a tab that is already selected is chosen again by the user.
         * Some applications may use this action to return to the top level of a category.
         *
         * @param tab The tab that was reselected.
         * @param ft A {@link FragmentTransaction} for queuing fragment operations to execute
         *        once this method returns.
         */
        public void onTabReselected(Tab tab, FragmentTransaction ft);
    }
}
+14 −11
Original line number Diff line number Diff line
@@ -326,12 +326,14 @@ public class ActionBarImpl extends ActionBar {

    @Override
    public void selectTab(Tab tab) {
        final FragmentTransaction trans = mActivity.getFragmentManager().openTransaction();

        if (mSelectedTab == tab) {
            return;
            if (mSelectedTab != null) {
                mSelectedTab.getCallback().onTabReselected(mSelectedTab, trans);
            }

        } else {
            mActionView.setTabSelected(tab != null ? tab.getPosition() : Tab.INVALID_POSITION);
        final FragmentTransaction trans = mActivity.getFragmentManager().openTransaction();
            if (mSelectedTab != null) {
                mSelectedTab.getCallback().onTabUnselected(mSelectedTab, trans);
            }
@@ -339,6 +341,7 @@ public class ActionBarImpl extends ActionBar {
            if (mSelectedTab != null) {
                mSelectedTab.getCallback().onTabSelected(mSelectedTab, trans);
            }
        }

        if (!trans.isEmpty()) {
            trans.commit();