1bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell/* 2bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell * Copyright (C) 2012 The Android Open Source Project 3bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell * 4bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell * Licensed under the Apache License, Version 2.0 (the "License"); 5bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell * you may not use this file except in compliance with the License. 6bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell * You may obtain a copy of the License at 7bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell * 8bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell * http://www.apache.org/licenses/LICENSE-2.0 9bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell * 10bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell * Unless required by applicable law or agreed to in writing, software 11bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell * distributed under the License is distributed on an "AS IS" BASIS, 12bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell * See the License for the specific language governing permissions and 14bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell * limitations under the License. 15bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell */ 16bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell 17da10fdd1400ecfd8d7f2e55651dd528d0614dfc5Jeff Brownpackage android.support.v7.app; 18bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell 196b730d46a744ec1621bd294eb626b10b11090ffbChris Banesimport android.app.Activity; 2051e35e07a00e4b56a1ca330323e69ef9258c4e57Chris Banesimport android.content.Intent; 2159ff0428452802ab5565633e637baa12f29834e8Trevor Johnsimport android.content.res.Configuration; 2236253822d50dccb7da9d22336551b7d5aa6e8620Chris Banesimport android.os.Build; 23bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powellimport android.os.Bundle; 2445d973fcc4c43f5ea00cddd3d9b947d9e8d8fc4eChris Banesimport android.support.v4.app.ActionBarDrawerToggle; 2551e35e07a00e4b56a1ca330323e69ef9258c4e57Chris Banesimport android.support.v4.app.ActivityCompat; 26da10fdd1400ecfd8d7f2e55651dd528d0614dfc5Jeff Brownimport android.support.v4.app.FragmentActivity; 2751e35e07a00e4b56a1ca330323e69ef9258c4e57Chris Banesimport android.support.v4.app.NavUtils; 2851e35e07a00e4b56a1ca330323e69ef9258c4e57Chris Banesimport android.support.v4.app.TaskStackBuilder; 29e6072e2d918169bd827cf7431347fb648124c227Jeff Brownimport android.support.v4.view.WindowCompat; 30d8222dedaacae30fa03bee346ebf42ee75b39928Chris Banesimport android.support.v7.view.ActionMode; 3130837f1095c803f332f4a1c3f0917c8afdd50156Adam Powellimport android.view.Menu; 3230837f1095c803f332f4a1c3f0917c8afdd50156Adam Powellimport android.view.MenuInflater; 3330837f1095c803f332f4a1c3f0917c8afdd50156Adam Powellimport android.view.MenuItem; 34bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powellimport android.view.View; 35bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powellimport android.view.ViewGroup; 368262949c1a6b7e191020b31fc914972bb0b58ab0Trevor Johnsimport android.view.Window; 37bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell 38e6072e2d918169bd827cf7431347fb648124c227Jeff Brown/** 399dcd2e58138ca4eb4b18f80b50e8979329e859d6Scott Main * Base class for activities that use the <a 409dcd2e58138ca4eb4b18f80b50e8979329e859d6Scott Main * href="{@docRoot}tools/extras/support-library.html">support library</a> action bar features. 419dcd2e58138ca4eb4b18f80b50e8979329e859d6Scott Main * 429dcd2e58138ca4eb4b18f80b50e8979329e859d6Scott Main * <p>You can add an {@link ActionBar} to your activity when running on API level 7 or higher 439dcd2e58138ca4eb4b18f80b50e8979329e859d6Scott Main * by extending this class for your activity and setting the activity theme to 449dcd2e58138ca4eb4b18f80b50e8979329e859d6Scott Main * {@link android.support.v7.appcompat.R.style#Theme_AppCompat Theme.AppCompat} or a similar theme. 459dcd2e58138ca4eb4b18f80b50e8979329e859d6Scott Main * 469dcd2e58138ca4eb4b18f80b50e8979329e859d6Scott Main * <div class="special reference"> 479dcd2e58138ca4eb4b18f80b50e8979329e859d6Scott Main * <h3>Developer Guides</h3> 489dcd2e58138ca4eb4b18f80b50e8979329e859d6Scott Main * 499dcd2e58138ca4eb4b18f80b50e8979329e859d6Scott Main * <p>For information about how to use the action bar, including how to add action items, navigation 509dcd2e58138ca4eb4b18f80b50e8979329e859d6Scott Main * modes and more, read the <a href="{@docRoot}guide/topics/ui/actionbar.html">Action 519dcd2e58138ca4eb4b18f80b50e8979329e859d6Scott Main * Bar</a> API guide.</p> 529dcd2e58138ca4eb4b18f80b50e8979329e859d6Scott Main * </div> 53e6072e2d918169bd827cf7431347fb648124c227Jeff Brown */ 546f9952fd5a1dc66c584b26b9062ba6efd69ebcc7Chris Banespublic class ActionBarActivity extends FragmentActivity implements ActionBar.Callback, 5545d973fcc4c43f5ea00cddd3d9b947d9e8d8fc4eChris Banes TaskStackBuilder.SupportParentable, ActionBarDrawerToggle.DelegateProvider { 566386aac7ea9be44d23dcea28d9a02110c174e988Chris Banes ActionBarActivityDelegate mImpl; 57e6072e2d918169bd827cf7431347fb648124c227Jeff Brown 58e6072e2d918169bd827cf7431347fb648124c227Jeff Brown /** 59e6072e2d918169bd827cf7431347fb648124c227Jeff Brown * Support library version of {@link Activity#getActionBar}. 60e6072e2d918169bd827cf7431347fb648124c227Jeff Brown * 61e6072e2d918169bd827cf7431347fb648124c227Jeff Brown * <p>Retrieve a reference to this activity's ActionBar. 62e6072e2d918169bd827cf7431347fb648124c227Jeff Brown * 63e6072e2d918169bd827cf7431347fb648124c227Jeff Brown * @return The Activity's ActionBar, or null if it does not have one. 64e6072e2d918169bd827cf7431347fb648124c227Jeff Brown */ 65e6072e2d918169bd827cf7431347fb648124c227Jeff Brown public ActionBar getSupportActionBar() { 665a2bcc375e046c5b6644dcc4d331d3fca0778aedChris Banes return mImpl.getSupportActionBar(); 67e6072e2d918169bd827cf7431347fb648124c227Jeff Brown } 68e6072e2d918169bd827cf7431347fb648124c227Jeff Brown 6903527a1c5ca870353671fd8b97a08a989fe62012Chris Banes @Override 7003527a1c5ca870353671fd8b97a08a989fe62012Chris Banes public MenuInflater getMenuInflater() { 7103527a1c5ca870353671fd8b97a08a989fe62012Chris Banes return mImpl.getMenuInflater(); 72e6072e2d918169bd827cf7431347fb648124c227Jeff Brown } 73e6072e2d918169bd827cf7431347fb648124c227Jeff Brown 74e6072e2d918169bd827cf7431347fb648124c227Jeff Brown @Override 75e6072e2d918169bd827cf7431347fb648124c227Jeff Brown public void setContentView(int layoutResID) { 76e6072e2d918169bd827cf7431347fb648124c227Jeff Brown mImpl.setContentView(layoutResID); 77e6072e2d918169bd827cf7431347fb648124c227Jeff Brown } 78e6072e2d918169bd827cf7431347fb648124c227Jeff Brown 79e6072e2d918169bd827cf7431347fb648124c227Jeff Brown @Override 80e6072e2d918169bd827cf7431347fb648124c227Jeff Brown public void setContentView(View view) { 81e6072e2d918169bd827cf7431347fb648124c227Jeff Brown mImpl.setContentView(view); 82e6072e2d918169bd827cf7431347fb648124c227Jeff Brown } 83e6072e2d918169bd827cf7431347fb648124c227Jeff Brown 84e6072e2d918169bd827cf7431347fb648124c227Jeff Brown @Override 85e6072e2d918169bd827cf7431347fb648124c227Jeff Brown public void setContentView(View view, ViewGroup.LayoutParams params) { 86e6072e2d918169bd827cf7431347fb648124c227Jeff Brown mImpl.setContentView(view, params); 87e6072e2d918169bd827cf7431347fb648124c227Jeff Brown } 88e6072e2d918169bd827cf7431347fb648124c227Jeff Brown 89e6072e2d918169bd827cf7431347fb648124c227Jeff Brown @Override 9030837f1095c803f332f4a1c3f0917c8afdd50156Adam Powell public void addContentView(View view, ViewGroup.LayoutParams params) { 9130837f1095c803f332f4a1c3f0917c8afdd50156Adam Powell mImpl.addContentView(view, params); 9230837f1095c803f332f4a1c3f0917c8afdd50156Adam Powell } 9330837f1095c803f332f4a1c3f0917c8afdd50156Adam Powell 9430837f1095c803f332f4a1c3f0917c8afdd50156Adam Powell @Override 95e6072e2d918169bd827cf7431347fb648124c227Jeff Brown protected void onCreate(Bundle savedInstanceState) { 965a2bcc375e046c5b6644dcc4d331d3fca0778aedChris Banes mImpl = ActionBarActivityDelegate.createDelegate(this); 97556ac47ce764a4a9320b5ac914536e9da2524176Chris Banes super.onCreate(savedInstanceState); 98e6072e2d918169bd827cf7431347fb648124c227Jeff Brown mImpl.onCreate(savedInstanceState); 99e6072e2d918169bd827cf7431347fb648124c227Jeff Brown } 100e6072e2d918169bd827cf7431347fb648124c227Jeff Brown 101e6072e2d918169bd827cf7431347fb648124c227Jeff Brown @Override 102e6072e2d918169bd827cf7431347fb648124c227Jeff Brown public void onConfigurationChanged(Configuration newConfig) { 103e6072e2d918169bd827cf7431347fb648124c227Jeff Brown super.onConfigurationChanged(newConfig); 104e6072e2d918169bd827cf7431347fb648124c227Jeff Brown mImpl.onConfigurationChanged(newConfig); 105e6072e2d918169bd827cf7431347fb648124c227Jeff Brown } 106e6072e2d918169bd827cf7431347fb648124c227Jeff Brown 107e6072e2d918169bd827cf7431347fb648124c227Jeff Brown @Override 108725c4409c9d876a688466249ec7d2f1bdafa5fdaJeff Brown protected void onStop() { 109a1fae63dbeeef71c2daa25bfcaa2348bffc369aaChris Banes super.onStop(); 110a1fae63dbeeef71c2daa25bfcaa2348bffc369aaChris Banes mImpl.onStop(); 111a1fae63dbeeef71c2daa25bfcaa2348bffc369aaChris Banes } 112a1fae63dbeeef71c2daa25bfcaa2348bffc369aaChris Banes 113a1fae63dbeeef71c2daa25bfcaa2348bffc369aaChris Banes @Override 114725c4409c9d876a688466249ec7d2f1bdafa5fdaJeff Brown protected void onPostResume() { 115a1fae63dbeeef71c2daa25bfcaa2348bffc369aaChris Banes super.onPostResume(); 116a1fae63dbeeef71c2daa25bfcaa2348bffc369aaChris Banes mImpl.onPostResume(); 117a1fae63dbeeef71c2daa25bfcaa2348bffc369aaChris Banes } 118a1fae63dbeeef71c2daa25bfcaa2348bffc369aaChris Banes 119a1fae63dbeeef71c2daa25bfcaa2348bffc369aaChris Banes @Override 120e6072e2d918169bd827cf7431347fb648124c227Jeff Brown public View onCreatePanelView(int featureId) { 121b522f57d119f63f3c397ecfec94aaf6459e9f136Chris Banes if (featureId == Window.FEATURE_OPTIONS_PANEL) { 122e6072e2d918169bd827cf7431347fb648124c227Jeff Brown return mImpl.onCreatePanelView(featureId); 123b522f57d119f63f3c397ecfec94aaf6459e9f136Chris Banes } else { 124e6072e2d918169bd827cf7431347fb648124c227Jeff Brown return super.onCreatePanelView(featureId); 125e6072e2d918169bd827cf7431347fb648124c227Jeff Brown } 126e6072e2d918169bd827cf7431347fb648124c227Jeff Brown } 127e6072e2d918169bd827cf7431347fb648124c227Jeff Brown 128e6072e2d918169bd827cf7431347fb648124c227Jeff Brown @Override 129b522f57d119f63f3c397ecfec94aaf6459e9f136Chris Banes public final boolean onMenuItemSelected(int featureId, android.view.MenuItem item) { 130e6072e2d918169bd827cf7431347fb648124c227Jeff Brown if (mImpl.onMenuItemSelected(featureId, item)) { 131e6072e2d918169bd827cf7431347fb648124c227Jeff Brown return true; 132e6072e2d918169bd827cf7431347fb648124c227Jeff Brown } 13330837f1095c803f332f4a1c3f0917c8afdd50156Adam Powell 13430837f1095c803f332f4a1c3f0917c8afdd50156Adam Powell final ActionBar ab = getSupportActionBar(); 13530837f1095c803f332f4a1c3f0917c8afdd50156Adam Powell if (item.getItemId() == android.R.id.home && ab != null && 13630837f1095c803f332f4a1c3f0917c8afdd50156Adam Powell (ab.getDisplayOptions() & ActionBar.DISPLAY_HOME_AS_UP) != 0) { 13730837f1095c803f332f4a1c3f0917c8afdd50156Adam Powell return onSupportNavigateUp(); 13830837f1095c803f332f4a1c3f0917c8afdd50156Adam Powell } 13930837f1095c803f332f4a1c3f0917c8afdd50156Adam Powell return false; 140e6072e2d918169bd827cf7431347fb648124c227Jeff Brown } 141e6072e2d918169bd827cf7431347fb648124c227Jeff Brown 142e6072e2d918169bd827cf7431347fb648124c227Jeff Brown @Override 143e6072e2d918169bd827cf7431347fb648124c227Jeff Brown protected void onTitleChanged(CharSequence title, int color) { 144e6072e2d918169bd827cf7431347fb648124c227Jeff Brown super.onTitleChanged(title, color); 145904507029cd8ea2d070b6df0911b2dd36b7075a6Chris Banes mImpl.onTitleChanged(title); 146e6072e2d918169bd827cf7431347fb648124c227Jeff Brown } 147e6072e2d918169bd827cf7431347fb648124c227Jeff Brown 148e6072e2d918169bd827cf7431347fb648124c227Jeff Brown /** 149e6072e2d918169bd827cf7431347fb648124c227Jeff Brown * Enable extended support library window features. 150e6072e2d918169bd827cf7431347fb648124c227Jeff Brown * <p> 151e6072e2d918169bd827cf7431347fb648124c227Jeff Brown * This is a convenience for calling 152e6072e2d918169bd827cf7431347fb648124c227Jeff Brown * {@link android.view.Window#requestFeature getWindow().requestFeature()}. 153e6072e2d918169bd827cf7431347fb648124c227Jeff Brown * </p> 154e6072e2d918169bd827cf7431347fb648124c227Jeff Brown * 155e6072e2d918169bd827cf7431347fb648124c227Jeff Brown * @param featureId The desired feature as defined in 156e6072e2d918169bd827cf7431347fb648124c227Jeff Brown * {@link android.view.Window} or {@link WindowCompat}. 157e6072e2d918169bd827cf7431347fb648124c227Jeff Brown * @return Returns true if the requested feature is supported and now enabled. 158e6072e2d918169bd827cf7431347fb648124c227Jeff Brown * 159e6072e2d918169bd827cf7431347fb648124c227Jeff Brown * @see android.app.Activity#requestWindowFeature 160e6072e2d918169bd827cf7431347fb648124c227Jeff Brown * @see android.view.Window#requestFeature 161e6072e2d918169bd827cf7431347fb648124c227Jeff Brown */ 162e6072e2d918169bd827cf7431347fb648124c227Jeff Brown public boolean supportRequestWindowFeature(int featureId) { 163ed34e2dffd0ce7da89063d06fd3b25687ca367a2Chris Banes return mImpl.supportRequestWindowFeature(featureId); 164e6072e2d918169bd827cf7431347fb648124c227Jeff Brown } 165e6072e2d918169bd827cf7431347fb648124c227Jeff Brown 166e6072e2d918169bd827cf7431347fb648124c227Jeff Brown @Override 167e6072e2d918169bd827cf7431347fb648124c227Jeff Brown public void supportInvalidateOptionsMenu() { 16889208232f3b5d1451408d787872504a190bc7ee0Chris Banes // Only call up to super on ICS+ 16989208232f3b5d1451408d787872504a190bc7ee0Chris Banes if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) { 170e6072e2d918169bd827cf7431347fb648124c227Jeff Brown super.supportInvalidateOptionsMenu(); 171e6072e2d918169bd827cf7431347fb648124c227Jeff Brown } 172e6072e2d918169bd827cf7431347fb648124c227Jeff Brown mImpl.supportInvalidateOptionsMenu(); 173e6072e2d918169bd827cf7431347fb648124c227Jeff Brown } 174e6072e2d918169bd827cf7431347fb648124c227Jeff Brown 175d8222dedaacae30fa03bee346ebf42ee75b39928Chris Banes /** 176d8222dedaacae30fa03bee346ebf42ee75b39928Chris Banes * Notifies the Activity that a support action mode has been started. 177d8222dedaacae30fa03bee346ebf42ee75b39928Chris Banes * Activity subclasses overriding this method should call the superclass implementation. 178d8222dedaacae30fa03bee346ebf42ee75b39928Chris Banes * 179d8222dedaacae30fa03bee346ebf42ee75b39928Chris Banes * @param mode The new action mode. 180d8222dedaacae30fa03bee346ebf42ee75b39928Chris Banes */ 181d8222dedaacae30fa03bee346ebf42ee75b39928Chris Banes public void onSupportActionModeStarted(ActionMode mode) { 182d8222dedaacae30fa03bee346ebf42ee75b39928Chris Banes } 183d8222dedaacae30fa03bee346ebf42ee75b39928Chris Banes 184d8222dedaacae30fa03bee346ebf42ee75b39928Chris Banes /** 185d8222dedaacae30fa03bee346ebf42ee75b39928Chris Banes * Notifies the activity that a support action mode has finished. 186d8222dedaacae30fa03bee346ebf42ee75b39928Chris Banes * Activity subclasses overriding this method should call the superclass implementation. 187d8222dedaacae30fa03bee346ebf42ee75b39928Chris Banes * 188d8222dedaacae30fa03bee346ebf42ee75b39928Chris Banes * @param mode The action mode that just finished. 189d8222dedaacae30fa03bee346ebf42ee75b39928Chris Banes */ 190d8222dedaacae30fa03bee346ebf42ee75b39928Chris Banes public void onSupportActionModeFinished(ActionMode mode) { 191d8222dedaacae30fa03bee346ebf42ee75b39928Chris Banes } 192d8222dedaacae30fa03bee346ebf42ee75b39928Chris Banes 19330837f1095c803f332f4a1c3f0917c8afdd50156Adam Powell public ActionMode startSupportActionMode(ActionMode.Callback callback) { 19430837f1095c803f332f4a1c3f0917c8afdd50156Adam Powell return mImpl.startSupportActionMode(callback); 1953a1a7fff9873abbf8097c96f7654a459bf34f223Jeff Brown } 1963a1a7fff9873abbf8097c96f7654a459bf34f223Jeff Brown 19730837f1095c803f332f4a1c3f0917c8afdd50156Adam Powell @Override 19830837f1095c803f332f4a1c3f0917c8afdd50156Adam Powell public boolean onCreatePanelMenu(int featureId, Menu menu) { 19930837f1095c803f332f4a1c3f0917c8afdd50156Adam Powell return mImpl.onCreatePanelMenu(featureId, menu); 2003a1a7fff9873abbf8097c96f7654a459bf34f223Jeff Brown } 2013a1a7fff9873abbf8097c96f7654a459bf34f223Jeff Brown 20230837f1095c803f332f4a1c3f0917c8afdd50156Adam Powell @Override 20330837f1095c803f332f4a1c3f0917c8afdd50156Adam Powell public boolean onPreparePanel(int featureId, View view, Menu menu) { 20430837f1095c803f332f4a1c3f0917c8afdd50156Adam Powell return mImpl.onPreparePanel(featureId, view, menu); 205d8222dedaacae30fa03bee346ebf42ee75b39928Chris Banes } 206d8222dedaacae30fa03bee346ebf42ee75b39928Chris Banes 2072bc5191a8cc331b404724759a015949a4b5499fbChris Banes /** 2082bc5191a8cc331b404724759a015949a4b5499fbChris Banes * @hide 2092bc5191a8cc331b404724759a015949a4b5499fbChris Banes */ 2102bc5191a8cc331b404724759a015949a4b5499fbChris Banes @Override 2112bc5191a8cc331b404724759a015949a4b5499fbChris Banes protected boolean onPrepareOptionsPanel(View view, Menu menu) { 2122bc5191a8cc331b404724759a015949a4b5499fbChris Banes return mImpl.onPrepareOptionsPanel(view, menu); 2132bc5191a8cc331b404724759a015949a4b5499fbChris Banes } 2142bc5191a8cc331b404724759a015949a4b5499fbChris Banes 215e6072e2d918169bd827cf7431347fb648124c227Jeff Brown void superSetContentView(int resId) { 216e6072e2d918169bd827cf7431347fb648124c227Jeff Brown super.setContentView(resId); 217e6072e2d918169bd827cf7431347fb648124c227Jeff Brown } 218e6072e2d918169bd827cf7431347fb648124c227Jeff Brown 219e6072e2d918169bd827cf7431347fb648124c227Jeff Brown void superSetContentView(View v) { 220e6072e2d918169bd827cf7431347fb648124c227Jeff Brown super.setContentView(v); 221e6072e2d918169bd827cf7431347fb648124c227Jeff Brown } 222e6072e2d918169bd827cf7431347fb648124c227Jeff Brown 223e6072e2d918169bd827cf7431347fb648124c227Jeff Brown void superSetContentView(View v, ViewGroup.LayoutParams lp) { 224e6072e2d918169bd827cf7431347fb648124c227Jeff Brown super.setContentView(v, lp); 225e6072e2d918169bd827cf7431347fb648124c227Jeff Brown } 226e6072e2d918169bd827cf7431347fb648124c227Jeff Brown 227e6072e2d918169bd827cf7431347fb648124c227Jeff Brown void superAddContentView(View v, ViewGroup.LayoutParams lp) { 228e6072e2d918169bd827cf7431347fb648124c227Jeff Brown super.addContentView(v, lp); 229e6072e2d918169bd827cf7431347fb648124c227Jeff Brown } 230e6072e2d918169bd827cf7431347fb648124c227Jeff Brown 231e6072e2d918169bd827cf7431347fb648124c227Jeff Brown boolean superOnCreatePanelMenu(int featureId, android.view.Menu frameworkMenu) { 232e6072e2d918169bd827cf7431347fb648124c227Jeff Brown return super.onCreatePanelMenu(featureId, frameworkMenu); 233e6072e2d918169bd827cf7431347fb648124c227Jeff Brown } 234bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell 23530837f1095c803f332f4a1c3f0917c8afdd50156Adam Powell boolean superOnPreparePanel(int featureId, View view, android.view.Menu menu) { 236e6072e2d918169bd827cf7431347fb648124c227Jeff Brown return super.onPreparePanel(featureId, view, menu); 237e6072e2d918169bd827cf7431347fb648124c227Jeff Brown } 238bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell 2392bc5191a8cc331b404724759a015949a4b5499fbChris Banes boolean superOnPrepareOptionsPanel(View view, Menu menu) { 2402bc5191a8cc331b404724759a015949a4b5499fbChris Banes return super.onPrepareOptionsPanel(view, menu); 2412bc5191a8cc331b404724759a015949a4b5499fbChris Banes } 2422bc5191a8cc331b404724759a015949a4b5499fbChris Banes 24330837f1095c803f332f4a1c3f0917c8afdd50156Adam Powell boolean superOnMenuItemSelected(int featureId, MenuItem menuItem) { 24430837f1095c803f332f4a1c3f0917c8afdd50156Adam Powell return super.onMenuItemSelected(featureId, menuItem); 24530837f1095c803f332f4a1c3f0917c8afdd50156Adam Powell } 24630837f1095c803f332f4a1c3f0917c8afdd50156Adam Powell 247d8222dedaacae30fa03bee346ebf42ee75b39928Chris Banes @Override 248d8222dedaacae30fa03bee346ebf42ee75b39928Chris Banes public void onBackPressed() { 249d8222dedaacae30fa03bee346ebf42ee75b39928Chris Banes if (!mImpl.onBackPressed()) { 250d8222dedaacae30fa03bee346ebf42ee75b39928Chris Banes super.onBackPressed(); 251d8222dedaacae30fa03bee346ebf42ee75b39928Chris Banes } 252d8222dedaacae30fa03bee346ebf42ee75b39928Chris Banes } 253d8222dedaacae30fa03bee346ebf42ee75b39928Chris Banes 254ed34e2dffd0ce7da89063d06fd3b25687ca367a2Chris Banes /** 255ed34e2dffd0ce7da89063d06fd3b25687ca367a2Chris Banes * Support library version of {@link Activity#setProgressBarVisibility(boolean)} 256ed34e2dffd0ce7da89063d06fd3b25687ca367a2Chris Banes * <p> 257ed34e2dffd0ce7da89063d06fd3b25687ca367a2Chris Banes * Sets the visibility of the progress bar in the title. 258ed34e2dffd0ce7da89063d06fd3b25687ca367a2Chris Banes * <p> 259ed34e2dffd0ce7da89063d06fd3b25687ca367a2Chris Banes * In order for the progress bar to be shown, the feature must be requested 260ed34e2dffd0ce7da89063d06fd3b25687ca367a2Chris Banes * via {@link #supportRequestWindowFeature(int)}. 261ed34e2dffd0ce7da89063d06fd3b25687ca367a2Chris Banes * 262ed34e2dffd0ce7da89063d06fd3b25687ca367a2Chris Banes * @param visible Whether to show the progress bars in the title. 263ed34e2dffd0ce7da89063d06fd3b25687ca367a2Chris Banes */ 264ed34e2dffd0ce7da89063d06fd3b25687ca367a2Chris Banes public void setSupportProgressBarVisibility(boolean visible) { 265ed34e2dffd0ce7da89063d06fd3b25687ca367a2Chris Banes mImpl.setSupportProgressBarVisibility(visible); 266ed34e2dffd0ce7da89063d06fd3b25687ca367a2Chris Banes } 267ed34e2dffd0ce7da89063d06fd3b25687ca367a2Chris Banes 268ed34e2dffd0ce7da89063d06fd3b25687ca367a2Chris Banes /** 269ed34e2dffd0ce7da89063d06fd3b25687ca367a2Chris Banes * Support library version of {@link Activity#setProgressBarIndeterminateVisibility(boolean)} 270ed34e2dffd0ce7da89063d06fd3b25687ca367a2Chris Banes * <p> 271ed34e2dffd0ce7da89063d06fd3b25687ca367a2Chris Banes * Sets the visibility of the indeterminate progress bar in the title. 272ed34e2dffd0ce7da89063d06fd3b25687ca367a2Chris Banes * <p> 273ed34e2dffd0ce7da89063d06fd3b25687ca367a2Chris Banes * In order for the progress bar to be shown, the feature must be requested 274ed34e2dffd0ce7da89063d06fd3b25687ca367a2Chris Banes * via {@link #supportRequestWindowFeature(int)}. 275ed34e2dffd0ce7da89063d06fd3b25687ca367a2Chris Banes * 276ed34e2dffd0ce7da89063d06fd3b25687ca367a2Chris Banes * @param visible Whether to show the progress bars in the title. 277ed34e2dffd0ce7da89063d06fd3b25687ca367a2Chris Banes */ 278ed34e2dffd0ce7da89063d06fd3b25687ca367a2Chris Banes public void setSupportProgressBarIndeterminateVisibility(boolean visible) { 279ed34e2dffd0ce7da89063d06fd3b25687ca367a2Chris Banes mImpl.setSupportProgressBarIndeterminateVisibility(visible); 280ed34e2dffd0ce7da89063d06fd3b25687ca367a2Chris Banes } 281ed34e2dffd0ce7da89063d06fd3b25687ca367a2Chris Banes 282ed34e2dffd0ce7da89063d06fd3b25687ca367a2Chris Banes /** 283ed34e2dffd0ce7da89063d06fd3b25687ca367a2Chris Banes * Support library version of {@link Activity#setProgressBarIndeterminate(boolean)} 284ed34e2dffd0ce7da89063d06fd3b25687ca367a2Chris Banes * <p> 28551e35e07a00e4b56a1ca330323e69ef9258c4e57Chris Banes * Sets whether the horizontal progress bar in the title should be indeterminate (the 28651e35e07a00e4b56a1ca330323e69ef9258c4e57Chris Banes * circular is always indeterminate). 287ed34e2dffd0ce7da89063d06fd3b25687ca367a2Chris Banes * <p> 288ed34e2dffd0ce7da89063d06fd3b25687ca367a2Chris Banes * In order for the progress bar to be shown, the feature must be requested 289ed34e2dffd0ce7da89063d06fd3b25687ca367a2Chris Banes * via {@link #supportRequestWindowFeature(int)}. 290ed34e2dffd0ce7da89063d06fd3b25687ca367a2Chris Banes * 291ed34e2dffd0ce7da89063d06fd3b25687ca367a2Chris Banes * @param indeterminate Whether the horizontal progress bar should be indeterminate. 292ed34e2dffd0ce7da89063d06fd3b25687ca367a2Chris Banes */ 293ed34e2dffd0ce7da89063d06fd3b25687ca367a2Chris Banes public void setSupportProgressBarIndeterminate(boolean indeterminate) { 294ed34e2dffd0ce7da89063d06fd3b25687ca367a2Chris Banes mImpl.setSupportProgressBarIndeterminate(indeterminate); 295ed34e2dffd0ce7da89063d06fd3b25687ca367a2Chris Banes } 296ed34e2dffd0ce7da89063d06fd3b25687ca367a2Chris Banes 297ed34e2dffd0ce7da89063d06fd3b25687ca367a2Chris Banes /** 298ed34e2dffd0ce7da89063d06fd3b25687ca367a2Chris Banes * Support library version of {@link Activity#setProgress(int)}. 299ed34e2dffd0ce7da89063d06fd3b25687ca367a2Chris Banes * <p> 300ed34e2dffd0ce7da89063d06fd3b25687ca367a2Chris Banes * Sets the progress for the progress bars in the title. 301ed34e2dffd0ce7da89063d06fd3b25687ca367a2Chris Banes * <p> 302ed34e2dffd0ce7da89063d06fd3b25687ca367a2Chris Banes * In order for the progress bar to be shown, the feature must be requested 303ed34e2dffd0ce7da89063d06fd3b25687ca367a2Chris Banes * via {@link #supportRequestWindowFeature(int)}. 304ed34e2dffd0ce7da89063d06fd3b25687ca367a2Chris Banes * 305ed34e2dffd0ce7da89063d06fd3b25687ca367a2Chris Banes * @param progress The progress for the progress bar. Valid ranges are from 306ed34e2dffd0ce7da89063d06fd3b25687ca367a2Chris Banes * 0 to 10000 (both inclusive). If 10000 is given, the progress 307ed34e2dffd0ce7da89063d06fd3b25687ca367a2Chris Banes * bar will be completely filled and will fade out. 308ed34e2dffd0ce7da89063d06fd3b25687ca367a2Chris Banes */ 309ed34e2dffd0ce7da89063d06fd3b25687ca367a2Chris Banes public void setSupportProgress(int progress) { 310ed34e2dffd0ce7da89063d06fd3b25687ca367a2Chris Banes mImpl.setSupportProgress(progress); 311ed34e2dffd0ce7da89063d06fd3b25687ca367a2Chris Banes } 312ed34e2dffd0ce7da89063d06fd3b25687ca367a2Chris Banes 31351e35e07a00e4b56a1ca330323e69ef9258c4e57Chris Banes /** 31451e35e07a00e4b56a1ca330323e69ef9258c4e57Chris Banes * Support version of {@link #onCreateNavigateUpTaskStack(android.app.TaskStackBuilder)}. 31551e35e07a00e4b56a1ca330323e69ef9258c4e57Chris Banes * This method will be called on all platform versions. 31651e35e07a00e4b56a1ca330323e69ef9258c4e57Chris Banes * 31751e35e07a00e4b56a1ca330323e69ef9258c4e57Chris Banes * Define the synthetic task stack that will be generated during Up navigation from 31851e35e07a00e4b56a1ca330323e69ef9258c4e57Chris Banes * a different task. 31951e35e07a00e4b56a1ca330323e69ef9258c4e57Chris Banes * 32051e35e07a00e4b56a1ca330323e69ef9258c4e57Chris Banes * <p>The default implementation of this method adds the parent chain of this activity 32151e35e07a00e4b56a1ca330323e69ef9258c4e57Chris Banes * as specified in the manifest to the supplied {@link TaskStackBuilder}. Applications 32251e35e07a00e4b56a1ca330323e69ef9258c4e57Chris Banes * may choose to override this method to construct the desired task stack in a different 32351e35e07a00e4b56a1ca330323e69ef9258c4e57Chris Banes * way.</p> 32451e35e07a00e4b56a1ca330323e69ef9258c4e57Chris Banes * 32551e35e07a00e4b56a1ca330323e69ef9258c4e57Chris Banes * <p>This method will be invoked by the default implementation of {@link #onNavigateUp()} 32651e35e07a00e4b56a1ca330323e69ef9258c4e57Chris Banes * if {@link #shouldUpRecreateTask(Intent)} returns true when supplied with the intent 32751e35e07a00e4b56a1ca330323e69ef9258c4e57Chris Banes * returned by {@link #getParentActivityIntent()}.</p> 32851e35e07a00e4b56a1ca330323e69ef9258c4e57Chris Banes * 32951e35e07a00e4b56a1ca330323e69ef9258c4e57Chris Banes * <p>Applications that wish to supply extra Intent parameters to the parent stack defined 33051e35e07a00e4b56a1ca330323e69ef9258c4e57Chris Banes * by the manifest should override 33151e35e07a00e4b56a1ca330323e69ef9258c4e57Chris Banes * {@link #onPrepareSupportNavigateUpTaskStack(TaskStackBuilder)}.</p> 33251e35e07a00e4b56a1ca330323e69ef9258c4e57Chris Banes * 33351e35e07a00e4b56a1ca330323e69ef9258c4e57Chris Banes * @param builder An empty TaskStackBuilder - the application should add intents representing 33451e35e07a00e4b56a1ca330323e69ef9258c4e57Chris Banes * the desired task stack 33551e35e07a00e4b56a1ca330323e69ef9258c4e57Chris Banes */ 33651e35e07a00e4b56a1ca330323e69ef9258c4e57Chris Banes public void onCreateSupportNavigateUpTaskStack(TaskStackBuilder builder) { 33751e35e07a00e4b56a1ca330323e69ef9258c4e57Chris Banes builder.addParentStack(this); 33851e35e07a00e4b56a1ca330323e69ef9258c4e57Chris Banes } 33951e35e07a00e4b56a1ca330323e69ef9258c4e57Chris Banes 34051e35e07a00e4b56a1ca330323e69ef9258c4e57Chris Banes /** 34151e35e07a00e4b56a1ca330323e69ef9258c4e57Chris Banes * Support version of {@link #onPrepareNavigateUpTaskStack(android.app.TaskStackBuilder)}. 34251e35e07a00e4b56a1ca330323e69ef9258c4e57Chris Banes * This method will be called on all platform versions. 34351e35e07a00e4b56a1ca330323e69ef9258c4e57Chris Banes * 34451e35e07a00e4b56a1ca330323e69ef9258c4e57Chris Banes * Prepare the synthetic task stack that will be generated during Up navigation 34551e35e07a00e4b56a1ca330323e69ef9258c4e57Chris Banes * from a different task. 34651e35e07a00e4b56a1ca330323e69ef9258c4e57Chris Banes * 34751e35e07a00e4b56a1ca330323e69ef9258c4e57Chris Banes * <p>This method receives the {@link TaskStackBuilder} with the constructed series of 34851e35e07a00e4b56a1ca330323e69ef9258c4e57Chris Banes * Intents as generated by {@link #onCreateSupportNavigateUpTaskStack(TaskStackBuilder)}. 34951e35e07a00e4b56a1ca330323e69ef9258c4e57Chris Banes * If any extra data should be added to these intents before launching the new task, 35051e35e07a00e4b56a1ca330323e69ef9258c4e57Chris Banes * the application should override this method and add that data here.</p> 35151e35e07a00e4b56a1ca330323e69ef9258c4e57Chris Banes * 35251e35e07a00e4b56a1ca330323e69ef9258c4e57Chris Banes * @param builder A TaskStackBuilder that has been populated with Intents by 35351e35e07a00e4b56a1ca330323e69ef9258c4e57Chris Banes * onCreateNavigateUpTaskStack. 35451e35e07a00e4b56a1ca330323e69ef9258c4e57Chris Banes */ 35551e35e07a00e4b56a1ca330323e69ef9258c4e57Chris Banes public void onPrepareSupportNavigateUpTaskStack(TaskStackBuilder builder) { 35651e35e07a00e4b56a1ca330323e69ef9258c4e57Chris Banes } 35751e35e07a00e4b56a1ca330323e69ef9258c4e57Chris Banes 3586f9952fd5a1dc66c584b26b9062ba6efd69ebcc7Chris Banes /** 3596f9952fd5a1dc66c584b26b9062ba6efd69ebcc7Chris Banes * This method is called whenever the user chooses to navigate Up within your application's 3606f9952fd5a1dc66c584b26b9062ba6efd69ebcc7Chris Banes * activity hierarchy from the action bar. 3616f9952fd5a1dc66c584b26b9062ba6efd69ebcc7Chris Banes * 3626f9952fd5a1dc66c584b26b9062ba6efd69ebcc7Chris Banes * <p>If a parent was specified in the manifest for this activity or an activity-alias to it, 3636f9952fd5a1dc66c584b26b9062ba6efd69ebcc7Chris Banes * default Up navigation will be handled automatically. See 3646f9952fd5a1dc66c584b26b9062ba6efd69ebcc7Chris Banes * {@link #getSupportParentActivityIntent()} for how to specify the parent. If any activity 3656f9952fd5a1dc66c584b26b9062ba6efd69ebcc7Chris Banes * along the parent chain requires extra Intent arguments, the Activity subclass 3666f9952fd5a1dc66c584b26b9062ba6efd69ebcc7Chris Banes * should override the method {@link #onPrepareSupportNavigateUpTaskStack(TaskStackBuilder)} 3676f9952fd5a1dc66c584b26b9062ba6efd69ebcc7Chris Banes * to supply those arguments.</p> 3686f9952fd5a1dc66c584b26b9062ba6efd69ebcc7Chris Banes * 3696f9952fd5a1dc66c584b26b9062ba6efd69ebcc7Chris Banes * <p>See <a href="{@docRoot}guide/topics/fundamentals/tasks-and-back-stack.html">Tasks and 3706f9952fd5a1dc66c584b26b9062ba6efd69ebcc7Chris Banes * Back Stack</a> from the developer guide and 3716f9952fd5a1dc66c584b26b9062ba6efd69ebcc7Chris Banes * <a href="{@docRoot}design/patterns/navigation.html">Navigation</a> from the design guide 3726f9952fd5a1dc66c584b26b9062ba6efd69ebcc7Chris Banes * for more information about navigating within your app.</p> 3736f9952fd5a1dc66c584b26b9062ba6efd69ebcc7Chris Banes * 3746f9952fd5a1dc66c584b26b9062ba6efd69ebcc7Chris Banes * <p>See the {@link TaskStackBuilder} class and the Activity methods 3756f9952fd5a1dc66c584b26b9062ba6efd69ebcc7Chris Banes * {@link #getSupportParentActivityIntent()}, {@link #supportShouldUpRecreateTask(Intent)}, and 3766f9952fd5a1dc66c584b26b9062ba6efd69ebcc7Chris Banes * {@link #supportNavigateUpTo(Intent)} for help implementing custom Up navigation.</p> 3776f9952fd5a1dc66c584b26b9062ba6efd69ebcc7Chris Banes * 3786f9952fd5a1dc66c584b26b9062ba6efd69ebcc7Chris Banes * @return true if Up navigation completed successfully and this Activity was finished, 3796f9952fd5a1dc66c584b26b9062ba6efd69ebcc7Chris Banes * false otherwise. 3806f9952fd5a1dc66c584b26b9062ba6efd69ebcc7Chris Banes */ 38151e35e07a00e4b56a1ca330323e69ef9258c4e57Chris Banes public boolean onSupportNavigateUp() { 3826f9952fd5a1dc66c584b26b9062ba6efd69ebcc7Chris Banes Intent upIntent = getSupportParentActivityIntent(); 38351e35e07a00e4b56a1ca330323e69ef9258c4e57Chris Banes 38451e35e07a00e4b56a1ca330323e69ef9258c4e57Chris Banes if (upIntent != null) { 3856f9952fd5a1dc66c584b26b9062ba6efd69ebcc7Chris Banes if (supportShouldUpRecreateTask(upIntent)) { 38651e35e07a00e4b56a1ca330323e69ef9258c4e57Chris Banes TaskStackBuilder b = TaskStackBuilder.create(this); 38751e35e07a00e4b56a1ca330323e69ef9258c4e57Chris Banes onCreateSupportNavigateUpTaskStack(b); 38851e35e07a00e4b56a1ca330323e69ef9258c4e57Chris Banes onPrepareSupportNavigateUpTaskStack(b); 38951e35e07a00e4b56a1ca330323e69ef9258c4e57Chris Banes b.startActivities(); 39051e35e07a00e4b56a1ca330323e69ef9258c4e57Chris Banes 39151e35e07a00e4b56a1ca330323e69ef9258c4e57Chris Banes try { 39251e35e07a00e4b56a1ca330323e69ef9258c4e57Chris Banes ActivityCompat.finishAffinity(this); 39351e35e07a00e4b56a1ca330323e69ef9258c4e57Chris Banes } catch (IllegalStateException e) { 39451e35e07a00e4b56a1ca330323e69ef9258c4e57Chris Banes // This can only happen on 4.1+, when we don't have a parent or a result set. 39551e35e07a00e4b56a1ca330323e69ef9258c4e57Chris Banes // In that case we should just finish(). 39651e35e07a00e4b56a1ca330323e69ef9258c4e57Chris Banes finish(); 39751e35e07a00e4b56a1ca330323e69ef9258c4e57Chris Banes } 39851e35e07a00e4b56a1ca330323e69ef9258c4e57Chris Banes } else { 39951e35e07a00e4b56a1ca330323e69ef9258c4e57Chris Banes // This activity is part of the application's task, so simply 40051e35e07a00e4b56a1ca330323e69ef9258c4e57Chris Banes // navigate up to the hierarchical parent activity. 4016f9952fd5a1dc66c584b26b9062ba6efd69ebcc7Chris Banes supportNavigateUpTo(upIntent); 40251e35e07a00e4b56a1ca330323e69ef9258c4e57Chris Banes } 40351e35e07a00e4b56a1ca330323e69ef9258c4e57Chris Banes return true; 40451e35e07a00e4b56a1ca330323e69ef9258c4e57Chris Banes } 40551e35e07a00e4b56a1ca330323e69ef9258c4e57Chris Banes return false; 40651e35e07a00e4b56a1ca330323e69ef9258c4e57Chris Banes } 40751e35e07a00e4b56a1ca330323e69ef9258c4e57Chris Banes 4086f9952fd5a1dc66c584b26b9062ba6efd69ebcc7Chris Banes /** 4096f9952fd5a1dc66c584b26b9062ba6efd69ebcc7Chris Banes * Obtain an {@link Intent} that will launch an explicit target activity 4106f9952fd5a1dc66c584b26b9062ba6efd69ebcc7Chris Banes * specified by sourceActivity's {@link NavUtils#PARENT_ACTIVITY} <meta-data> 4116f9952fd5a1dc66c584b26b9062ba6efd69ebcc7Chris Banes * element in the application's manifest. If the device is running 4126f9952fd5a1dc66c584b26b9062ba6efd69ebcc7Chris Banes * Jellybean or newer, the android:parentActivityName attribute will be preferred 4136f9952fd5a1dc66c584b26b9062ba6efd69ebcc7Chris Banes * if it is present. 4146f9952fd5a1dc66c584b26b9062ba6efd69ebcc7Chris Banes * 4156f9952fd5a1dc66c584b26b9062ba6efd69ebcc7Chris Banes * @return a new Intent targeting the defined parent activity of sourceActivity 4166f9952fd5a1dc66c584b26b9062ba6efd69ebcc7Chris Banes */ 4176f9952fd5a1dc66c584b26b9062ba6efd69ebcc7Chris Banes public Intent getSupportParentActivityIntent() { 4186f9952fd5a1dc66c584b26b9062ba6efd69ebcc7Chris Banes return NavUtils.getParentActivityIntent(this); 4196f9952fd5a1dc66c584b26b9062ba6efd69ebcc7Chris Banes } 4206f9952fd5a1dc66c584b26b9062ba6efd69ebcc7Chris Banes 4216f9952fd5a1dc66c584b26b9062ba6efd69ebcc7Chris Banes /** 4226f9952fd5a1dc66c584b26b9062ba6efd69ebcc7Chris Banes * Returns true if sourceActivity should recreate the task when navigating 'up' 4236f9952fd5a1dc66c584b26b9062ba6efd69ebcc7Chris Banes * by using targetIntent. 4246f9952fd5a1dc66c584b26b9062ba6efd69ebcc7Chris Banes * 4256f9952fd5a1dc66c584b26b9062ba6efd69ebcc7Chris Banes * <p>If this method returns false the app can trivially call 4266f9952fd5a1dc66c584b26b9062ba6efd69ebcc7Chris Banes * {@link #supportNavigateUpTo(Intent)} using the same parameters to correctly perform 4276f9952fd5a1dc66c584b26b9062ba6efd69ebcc7Chris Banes * up navigation. If this method returns false, the app should synthesize a new task stack 4286f9952fd5a1dc66c584b26b9062ba6efd69ebcc7Chris Banes * by using {@link TaskStackBuilder} or another similar mechanism to perform up navigation.</p> 4296f9952fd5a1dc66c584b26b9062ba6efd69ebcc7Chris Banes * 4306f9952fd5a1dc66c584b26b9062ba6efd69ebcc7Chris Banes * @param targetIntent An intent representing the target destination for up navigation 4316f9952fd5a1dc66c584b26b9062ba6efd69ebcc7Chris Banes * @return true if navigating up should recreate a new task stack, false if the same task 4326f9952fd5a1dc66c584b26b9062ba6efd69ebcc7Chris Banes * should be used for the destination 4336f9952fd5a1dc66c584b26b9062ba6efd69ebcc7Chris Banes */ 4346f9952fd5a1dc66c584b26b9062ba6efd69ebcc7Chris Banes public boolean supportShouldUpRecreateTask(Intent targetIntent) { 4356f9952fd5a1dc66c584b26b9062ba6efd69ebcc7Chris Banes return NavUtils.shouldUpRecreateTask(this, targetIntent); 4366f9952fd5a1dc66c584b26b9062ba6efd69ebcc7Chris Banes } 4376f9952fd5a1dc66c584b26b9062ba6efd69ebcc7Chris Banes 4386f9952fd5a1dc66c584b26b9062ba6efd69ebcc7Chris Banes /** 4396f9952fd5a1dc66c584b26b9062ba6efd69ebcc7Chris Banes * Navigate from sourceActivity to the activity specified by upIntent, finishing sourceActivity 4406f9952fd5a1dc66c584b26b9062ba6efd69ebcc7Chris Banes * in the process. upIntent will have the flag {@link Intent#FLAG_ACTIVITY_CLEAR_TOP} set 4416f9952fd5a1dc66c584b26b9062ba6efd69ebcc7Chris Banes * by this method, along with any others required for proper up navigation as outlined 4426f9952fd5a1dc66c584b26b9062ba6efd69ebcc7Chris Banes * in the Android Design Guide. 4436f9952fd5a1dc66c584b26b9062ba6efd69ebcc7Chris Banes * 4446f9952fd5a1dc66c584b26b9062ba6efd69ebcc7Chris Banes * <p>This method should be used when performing up navigation from within the same task 4456f9952fd5a1dc66c584b26b9062ba6efd69ebcc7Chris Banes * as the destination. If up navigation should cross tasks in some cases, see 4466f9952fd5a1dc66c584b26b9062ba6efd69ebcc7Chris Banes * {@link #supportShouldUpRecreateTask(Intent)}.</p> 4476f9952fd5a1dc66c584b26b9062ba6efd69ebcc7Chris Banes * 4486f9952fd5a1dc66c584b26b9062ba6efd69ebcc7Chris Banes * @param upIntent An intent representing the target destination for up navigation 4496f9952fd5a1dc66c584b26b9062ba6efd69ebcc7Chris Banes */ 4506f9952fd5a1dc66c584b26b9062ba6efd69ebcc7Chris Banes public void supportNavigateUpTo(Intent upIntent) { 4516f9952fd5a1dc66c584b26b9062ba6efd69ebcc7Chris Banes NavUtils.navigateUpTo(this, upIntent); 4526f9952fd5a1dc66c584b26b9062ba6efd69ebcc7Chris Banes } 4536f9952fd5a1dc66c584b26b9062ba6efd69ebcc7Chris Banes 45445d973fcc4c43f5ea00cddd3d9b947d9e8d8fc4eChris Banes @Override 45545d973fcc4c43f5ea00cddd3d9b947d9e8d8fc4eChris Banes public final ActionBarDrawerToggle.Delegate getDrawerToggleDelegate() { 45645d973fcc4c43f5ea00cddd3d9b947d9e8d8fc4eChris Banes return mImpl.getDrawerToggleDelegate(); 45745d973fcc4c43f5ea00cddd3d9b947d9e8d8fc4eChris Banes } 458d64322f4b9686fabfd5a03f402d50a8e3fe5adedChris Banes 459d64322f4b9686fabfd5a03f402d50a8e3fe5adedChris Banes /** 460d64322f4b9686fabfd5a03f402d50a8e3fe5adedChris Banes * Use {@link #onSupportContentChanged()} instead. 461d64322f4b9686fabfd5a03f402d50a8e3fe5adedChris Banes */ 462d64322f4b9686fabfd5a03f402d50a8e3fe5adedChris Banes public final void onContentChanged() { 463d64322f4b9686fabfd5a03f402d50a8e3fe5adedChris Banes mImpl.onContentChanged(); 464d64322f4b9686fabfd5a03f402d50a8e3fe5adedChris Banes } 465d64322f4b9686fabfd5a03f402d50a8e3fe5adedChris Banes 466d64322f4b9686fabfd5a03f402d50a8e3fe5adedChris Banes /** 467d64322f4b9686fabfd5a03f402d50a8e3fe5adedChris Banes * This hook is called whenever the content view of the screen changes. 468d64322f4b9686fabfd5a03f402d50a8e3fe5adedChris Banes * @see android.app.Activity#onContentChanged() 469d64322f4b9686fabfd5a03f402d50a8e3fe5adedChris Banes */ 470d64322f4b9686fabfd5a03f402d50a8e3fe5adedChris Banes public void onSupportContentChanged() { 471d64322f4b9686fabfd5a03f402d50a8e3fe5adedChris Banes } 472bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell} 473