ActivityState.java revision b21b8e58a604f6c701245d84b141b5b87663192b
1f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin/* 2f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * Copyright (C) 2010 The Android Open Source Project 3f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * 4f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * Licensed under the Apache License, Version 2.0 (the "License"); 5f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * you may not use this file except in compliance with the License. 6f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * You may obtain a copy of the License at 7f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * 8f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * http://www.apache.org/licenses/LICENSE-2.0 9f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * 10f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * Unless required by applicable law or agreed to in writing, software 11f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * distributed under the License is distributed on an "AS IS" BASIS, 12f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * See the License for the specific language governing permissions and 14f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * limitations under the License. 15f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin */ 16f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 17f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Linpackage com.android.gallery3d.app; 18f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 19f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Linimport android.app.Activity; 208e6fd7cee5467824cd96b4127ccc755c70bd4ea3Daniel Sandlerimport android.content.BroadcastReceiver; 2111f14dc9e1d4d04b7c21b076445f3cb8c173753bBobby Georgescuimport android.content.ContentResolver; 228e6fd7cee5467824cd96b4127ccc755c70bd4ea3Daniel Sandlerimport android.content.Context; 238e6fd7cee5467824cd96b4127ccc755c70bd4ea3Daniel Sandlerimport android.content.Intent; 248e6fd7cee5467824cd96b4127ccc755c70bd4ea3Daniel Sandlerimport android.content.IntentFilter; 258e565703e8d482421714383a8ad40a67929ce2daOwen Linimport android.content.res.Configuration; 268e6fd7cee5467824cd96b4127ccc755c70bd4ea3Daniel Sandlerimport android.os.BatteryManager; 27f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Linimport android.os.Bundle; 2811f14dc9e1d4d04b7c21b076445f3cb8c173753bBobby Georgescuimport android.provider.Settings; 2911f14dc9e1d4d04b7c21b076445f3cb8c173753bBobby Georgescuimport android.provider.Settings.SettingNotFoundException; 308e6fd7cee5467824cd96b4127ccc755c70bd4ea3Daniel Sandlerimport android.view.Window; 31f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Linimport android.view.WindowManager; 32f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 33b21b8e58a604f6c701245d84b141b5b87663192bOwen Linimport com.actionbarsherlock.app.ActionBar; 34b21b8e58a604f6c701245d84b141b5b87663192bOwen Linimport com.actionbarsherlock.app.SherlockActivity; 35b21b8e58a604f6c701245d84b141b5b87663192bOwen Linimport com.actionbarsherlock.view.Menu; 36b21b8e58a604f6c701245d84b141b5b87663192bOwen Linimport com.actionbarsherlock.view.MenuInflater; 37b21b8e58a604f6c701245d84b141b5b87663192bOwen Linimport com.actionbarsherlock.view.MenuItem; 38915c2c5b2c367df71599370613af0924bd7c4887Bobby Georgescuimport com.android.gallery3d.R; 39a9bd72c2efc7f7c26c60083d8f00380e60caf94eRay Chenimport com.android.gallery3d.ui.GLView; 40915c2c5b2c367df71599370613af0924bd7c4887Bobby Georgescuimport com.android.gallery3d.util.GalleryUtils; 41a9bd72c2efc7f7c26c60083d8f00380e60caf94eRay Chen 42f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Linabstract public class ActivityState { 43d83f5f227315cccfe3c23db90c93b5fd7be20597Yuli Huang protected static final int FLAG_HIDE_ACTION_BAR = 1; 44d83f5f227315cccfe3c23db90c93b5fd7be20597Yuli Huang protected static final int FLAG_HIDE_STATUS_BAR = 2; 45afb3d1d8f341620f6b69d47d52b515f53817aa91Yuli Huang protected static final int FLAG_SCREEN_ON_WHEN_PLUGGED = 4; 46afb3d1d8f341620f6b69d47d52b515f53817aa91Yuli Huang protected static final int FLAG_SCREEN_ON_ALWAYS = 8; 478e6fd7cee5467824cd96b4127ccc755c70bd4ea3Daniel Sandler 488e6fd7cee5467824cd96b4127ccc755c70bd4ea3Daniel Sandler private static final int SCREEN_ON_FLAGS = ( 498e6fd7cee5467824cd96b4127ccc755c70bd4ea3Daniel Sandler WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON 508e6fd7cee5467824cd96b4127ccc755c70bd4ea3Daniel Sandler | WindowManager.LayoutParams.FLAG_ALLOW_LOCK_WHILE_SCREEN_ON 518e6fd7cee5467824cd96b4127ccc755c70bd4ea3Daniel Sandler | WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED 528e6fd7cee5467824cd96b4127ccc755c70bd4ea3Daniel Sandler ); 53f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 54b21b8e58a604f6c701245d84b141b5b87663192bOwen Lin protected AbstractGalleryActivity mActivity; 55f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin protected Bundle mData; 56f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin protected int mFlags; 57f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 58f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin protected ResultEntry mReceivedResults; 59f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin protected ResultEntry mResult; 60f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 61f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin protected static class ResultEntry { 62f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin public int requestCode; 63f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin public int resultCode = Activity.RESULT_CANCELED; 64f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin public Intent resultData; 65f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 66f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 6711f14dc9e1d4d04b7c21b076445f3cb8c173753bBobby Georgescu protected boolean mHapticsEnabled; 6811f14dc9e1d4d04b7c21b076445f3cb8c173753bBobby Georgescu private ContentResolver mContentResolver; 6911f14dc9e1d4d04b7c21b076445f3cb8c173753bBobby Georgescu 7057cbaa1ef40d2215c6400f5ae4af3a09e67abb2dHung-ying Tyan private boolean mDestroyed = false; 718e6fd7cee5467824cd96b4127ccc755c70bd4ea3Daniel Sandler private boolean mPlugged = false; 72616a70fdb4473d2fbd7b70772a3a82b908aeae1eOwen Lin boolean mIsFinishing = false; 7357cbaa1ef40d2215c6400f5ae4af3a09e67abb2dHung-ying Tyan 74f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin protected ActivityState() { 75f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 76f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 77f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin protected void setContentPane(GLView content) { 78f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin mActivity.getGLRoot().setContentPane(content); 79f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 80f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 81b21b8e58a604f6c701245d84b141b5b87663192bOwen Lin void initialize(AbstractGalleryActivity activity, Bundle data) { 82f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin mActivity = activity; 83f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin mData = data; 8411f14dc9e1d4d04b7c21b076445f3cb8c173753bBobby Georgescu mContentResolver = activity.getAndroidContext().getContentResolver(); 85f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 86f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 87f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin public Bundle getData() { 88f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin return mData; 89f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 90f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 91f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin protected void onBackPressed() { 92f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin mActivity.getStateManager().finishState(this); 93f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 94f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 95f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin protected void setStateResult(int resultCode, Intent data) { 96f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin if (mResult == null) return; 97f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin mResult.resultCode = resultCode; 98f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin mResult.resultData = data; 99f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 100f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 1018e565703e8d482421714383a8ad40a67929ce2daOwen Lin protected void onConfigurationChanged(Configuration config) { 1028e565703e8d482421714383a8ad40a67929ce2daOwen Lin } 1038e565703e8d482421714383a8ad40a67929ce2daOwen Lin 104f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin protected void onSaveState(Bundle outState) { 105f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 106f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 107f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin protected void onStateResult(int requestCode, int resultCode, Intent data) { 108f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 109f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 110915c2c5b2c367df71599370613af0924bd7c4887Bobby Georgescu protected float[] mBackgroundColor; 111915c2c5b2c367df71599370613af0924bd7c4887Bobby Georgescu 112915c2c5b2c367df71599370613af0924bd7c4887Bobby Georgescu protected int getBackgroundColorId() { 113915c2c5b2c367df71599370613af0924bd7c4887Bobby Georgescu return R.color.default_background; 114915c2c5b2c367df71599370613af0924bd7c4887Bobby Georgescu } 115915c2c5b2c367df71599370613af0924bd7c4887Bobby Georgescu 116915c2c5b2c367df71599370613af0924bd7c4887Bobby Georgescu protected float[] getBackgroundColor() { 117915c2c5b2c367df71599370613af0924bd7c4887Bobby Georgescu return mBackgroundColor; 118915c2c5b2c367df71599370613af0924bd7c4887Bobby Georgescu } 119915c2c5b2c367df71599370613af0924bd7c4887Bobby Georgescu 120f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin protected void onCreate(Bundle data, Bundle storedState) { 121915c2c5b2c367df71599370613af0924bd7c4887Bobby Georgescu mBackgroundColor = GalleryUtils.intColorToFloatARGBArray( 122915c2c5b2c367df71599370613af0924bd7c4887Bobby Georgescu mActivity.getResources().getColor(getBackgroundColorId())); 123f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 124f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 12514d3289b4867c21da93ec4032119c0091bc78c30George Mount protected void clearStateResult() { 12614d3289b4867c21da93ec4032119c0091bc78c30George Mount } 12714d3289b4867c21da93ec4032119c0091bc78c30George Mount 1288e6fd7cee5467824cd96b4127ccc755c70bd4ea3Daniel Sandler BroadcastReceiver mPowerIntentReceiver = new BroadcastReceiver() { 1298e6fd7cee5467824cd96b4127ccc755c70bd4ea3Daniel Sandler @Override 1308e6fd7cee5467824cd96b4127ccc755c70bd4ea3Daniel Sandler public void onReceive(Context context, Intent intent) { 1318e6fd7cee5467824cd96b4127ccc755c70bd4ea3Daniel Sandler final String action = intent.getAction(); 1328e6fd7cee5467824cd96b4127ccc755c70bd4ea3Daniel Sandler if (Intent.ACTION_BATTERY_CHANGED.equals(action)) { 1338e6fd7cee5467824cd96b4127ccc755c70bd4ea3Daniel Sandler boolean plugged = (0 != intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, 0)); 1348e6fd7cee5467824cd96b4127ccc755c70bd4ea3Daniel Sandler 1358e6fd7cee5467824cd96b4127ccc755c70bd4ea3Daniel Sandler if (plugged != mPlugged) { 1368e6fd7cee5467824cd96b4127ccc755c70bd4ea3Daniel Sandler mPlugged = plugged; 1370b2486cff0c1b951c54325596256b986307f7f3aChih-Chung Chang setScreenOnFlags(); 1388e6fd7cee5467824cd96b4127ccc755c70bd4ea3Daniel Sandler } 1398e6fd7cee5467824cd96b4127ccc755c70bd4ea3Daniel Sandler } 1408e6fd7cee5467824cd96b4127ccc755c70bd4ea3Daniel Sandler } 1418e6fd7cee5467824cd96b4127ccc755c70bd4ea3Daniel Sandler }; 1428e6fd7cee5467824cd96b4127ccc755c70bd4ea3Daniel Sandler 1430b2486cff0c1b951c54325596256b986307f7f3aChih-Chung Chang void setScreenOnFlags() { 1440b2486cff0c1b951c54325596256b986307f7f3aChih-Chung Chang final Window win = ((Activity) mActivity).getWindow(); 1450b2486cff0c1b951c54325596256b986307f7f3aChih-Chung Chang final WindowManager.LayoutParams params = win.getAttributes(); 146afb3d1d8f341620f6b69d47d52b515f53817aa91Yuli Huang if ((0 != (mFlags & FLAG_SCREEN_ON_ALWAYS)) || 147afb3d1d8f341620f6b69d47d52b515f53817aa91Yuli Huang (mPlugged && 0 != (mFlags & FLAG_SCREEN_ON_WHEN_PLUGGED))) { 1488e6fd7cee5467824cd96b4127ccc755c70bd4ea3Daniel Sandler params.flags |= SCREEN_ON_FLAGS; 1498e6fd7cee5467824cd96b4127ccc755c70bd4ea3Daniel Sandler } else { 1508e6fd7cee5467824cd96b4127ccc755c70bd4ea3Daniel Sandler params.flags &= ~SCREEN_ON_FLAGS; 1518e6fd7cee5467824cd96b4127ccc755c70bd4ea3Daniel Sandler } 1520b2486cff0c1b951c54325596256b986307f7f3aChih-Chung Chang win.setAttributes(params); 1538e6fd7cee5467824cd96b4127ccc755c70bd4ea3Daniel Sandler } 1548e6fd7cee5467824cd96b4127ccc755c70bd4ea3Daniel Sandler 155f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin protected void onPause() { 156afb3d1d8f341620f6b69d47d52b515f53817aa91Yuli Huang if (0 != (mFlags & FLAG_SCREEN_ON_WHEN_PLUGGED)) { 157002a3fece284f713537fad4523ee963d257350e9Chih-Chung Chang ((Activity) mActivity).unregisterReceiver(mPowerIntentReceiver); 158002a3fece284f713537fad4523ee963d257350e9Chih-Chung Chang } 159f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 160f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 161f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin // should only be called by StateManager 162f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin void resume() { 163b21b8e58a604f6c701245d84b141b5b87663192bOwen Lin AbstractGalleryActivity activity = mActivity; 164b21b8e58a604f6c701245d84b141b5b87663192bOwen Lin ActionBar actionBar = ((SherlockActivity) activity).getSupportActionBar(); 165f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin if (actionBar != null) { 166f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin if ((mFlags & FLAG_HIDE_ACTION_BAR) != 0) { 167f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin actionBar.hide(); 168f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } else { 169f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin actionBar.show(); 170f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 171f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin int stateCount = mActivity.getStateManager().getStateCount(); 172655f63f04638dfe31045eab1b6b4c39cc2db10dbRay Chen mActivity.getGalleryActionBar().setDisplayOptions(stateCount > 1, true); 173fe1625c46f8258be4cd5e5e1ba69b584c1fe1a49Ray Chen // Default behavior, this can be overridden in ActivityState's onResume. 174fe1625c46f8258be4cd5e5e1ba69b584c1fe1a49Ray Chen actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD); 175f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 176f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 177f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin activity.invalidateOptionsMenu(); 178f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 1790b2486cff0c1b951c54325596256b986307f7f3aChih-Chung Chang setScreenOnFlags(); 1808e6fd7cee5467824cd96b4127ccc755c70bd4ea3Daniel Sandler 1810b2486cff0c1b951c54325596256b986307f7f3aChih-Chung Chang boolean lightsOut = ((mFlags & FLAG_HIDE_STATUS_BAR) != 0); 1820b2486cff0c1b951c54325596256b986307f7f3aChih-Chung Chang mActivity.getGLRoot().setLightsOutMode(lightsOut); 1838e6fd7cee5467824cd96b4127ccc755c70bd4ea3Daniel Sandler 184f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin ResultEntry entry = mReceivedResults; 185f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin if (entry != null) { 186f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin mReceivedResults = null; 187f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin onStateResult(entry.requestCode, entry.resultCode, entry.resultData); 188f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 1898e6fd7cee5467824cd96b4127ccc755c70bd4ea3Daniel Sandler 190afb3d1d8f341620f6b69d47d52b515f53817aa91Yuli Huang if (0 != (mFlags & FLAG_SCREEN_ON_WHEN_PLUGGED)) { 1918e6fd7cee5467824cd96b4127ccc755c70bd4ea3Daniel Sandler // we need to know whether the device is plugged in to do this correctly 1928e6fd7cee5467824cd96b4127ccc755c70bd4ea3Daniel Sandler final IntentFilter filter = new IntentFilter(); 1938e6fd7cee5467824cd96b4127ccc755c70bd4ea3Daniel Sandler filter.addAction(Intent.ACTION_BATTERY_CHANGED); 1948e6fd7cee5467824cd96b4127ccc755c70bd4ea3Daniel Sandler activity.registerReceiver(mPowerIntentReceiver, filter); 1958e6fd7cee5467824cd96b4127ccc755c70bd4ea3Daniel Sandler } 19611f14dc9e1d4d04b7c21b076445f3cb8c173753bBobby Georgescu 19711f14dc9e1d4d04b7c21b076445f3cb8c173753bBobby Georgescu try { 19811f14dc9e1d4d04b7c21b076445f3cb8c173753bBobby Georgescu mHapticsEnabled = Settings.System.getInt(mContentResolver, 19911f14dc9e1d4d04b7c21b076445f3cb8c173753bBobby Georgescu Settings.System.HAPTIC_FEEDBACK_ENABLED) != 0; 20011f14dc9e1d4d04b7c21b076445f3cb8c173753bBobby Georgescu } catch (SettingNotFoundException e) { 20111f14dc9e1d4d04b7c21b076445f3cb8c173753bBobby Georgescu mHapticsEnabled = false; 20211f14dc9e1d4d04b7c21b076445f3cb8c173753bBobby Georgescu } 20311f14dc9e1d4d04b7c21b076445f3cb8c173753bBobby Georgescu 204f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin onResume(); 205616a70fdb4473d2fbd7b70772a3a82b908aeae1eOwen Lin 206616a70fdb4473d2fbd7b70772a3a82b908aeae1eOwen Lin // the transition store should be cleared after resume; 207616a70fdb4473d2fbd7b70772a3a82b908aeae1eOwen Lin mActivity.getTransitionStore().clear(); 208f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 209f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 210f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin // a subclass of ActivityState should override the method to resume itself 211f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin protected void onResume() { 212f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 213f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 214f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin protected boolean onCreateActionBar(Menu menu) { 2156cf807453fb58ccd4cc513ff187b306c7090e67cOwen Lin // TODO: we should return false if there is no menu to show 2166cf807453fb58ccd4cc513ff187b306c7090e67cOwen Lin // this is a workaround for a bug in system 2176cf807453fb58ccd4cc513ff187b306c7090e67cOwen Lin return true; 218f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 219f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 220f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin protected boolean onItemSelected(MenuItem item) { 221f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin return false; 222f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 223f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 224f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin protected void onDestroy() { 22557cbaa1ef40d2215c6400f5ae4af3a09e67abb2dHung-ying Tyan mDestroyed = true; 22657cbaa1ef40d2215c6400f5ae4af3a09e67abb2dHung-ying Tyan } 22757cbaa1ef40d2215c6400f5ae4af3a09e67abb2dHung-ying Tyan 22857cbaa1ef40d2215c6400f5ae4af3a09e67abb2dHung-ying Tyan boolean isDestroyed() { 22957cbaa1ef40d2215c6400f5ae4af3a09e67abb2dHung-ying Tyan return mDestroyed; 230f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 231616a70fdb4473d2fbd7b70772a3a82b908aeae1eOwen Lin 232616a70fdb4473d2fbd7b70772a3a82b908aeae1eOwen Lin public boolean isFinishing() { 233616a70fdb4473d2fbd7b70772a3a82b908aeae1eOwen Lin return mIsFinishing; 234616a70fdb4473d2fbd7b70772a3a82b908aeae1eOwen Lin } 235b21b8e58a604f6c701245d84b141b5b87663192bOwen Lin 236b21b8e58a604f6c701245d84b141b5b87663192bOwen Lin protected MenuInflater getSupportMenuInflater() { 237b21b8e58a604f6c701245d84b141b5b87663192bOwen Lin return ((SherlockActivity) mActivity).getSupportMenuInflater(); 238b21b8e58a604f6c701245d84b141b5b87663192bOwen Lin } 239f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin} 240