diff --git a/src/com/android/settings/SettingsPreferenceFragment.java b/src/com/android/settings/SettingsPreferenceFragment.java index 47e31eeb6b9..09faf4142cf 100644 --- a/src/com/android/settings/SettingsPreferenceFragment.java +++ b/src/com/android/settings/SettingsPreferenceFragment.java @@ -78,6 +78,17 @@ public class SettingsPreferenceFragment extends PreferenceFragment return getActivity().getPackageManager(); } + @Override + public void onDetach() { + if (isRemoving()) { + if (mDialogFragment != null) { + mDialogFragment.dismiss(); + mDialogFragment = null; + } + } + super.onDetach(); + } + // Dialog management protected void showDialog(int dialogId) { diff --git a/src/com/android/settings/applications/ManageApplications.java b/src/com/android/settings/applications/ManageApplications.java index 37efefce1be..e0233becc1b 100644 --- a/src/com/android/settings/applications/ManageApplications.java +++ b/src/com/android/settings/applications/ManageApplications.java @@ -184,6 +184,8 @@ public class ManageApplications extends Fragment implements static final String TAB_SDCARD = "OnSdCard"; private View mRootView; + private boolean mShowBackground = false; + // -------------- Copied from TabActivity -------------- private TabHost mTabHost; @@ -539,6 +541,7 @@ public class ManageApplications extends Fragment implements mFilterApps = savedInstanceState.getInt("filterApps", mFilterApps); String tmp = savedInstanceState.getString("defaultTabTag"); if (tmp != null) defaultTabTag = tmp; + mShowBackground = savedInstanceState.getBoolean("showBackground", false); } mDefaultTab = defaultTabTag; @@ -631,6 +634,7 @@ public class ManageApplications extends Fragment implements if (mDefaultTab != null) { outState.putString("defautTabTag", mDefaultTab); } + outState.putBoolean("showBackground", mShowBackground); } @Override @@ -666,11 +670,13 @@ public class ManageApplications extends Fragment implements public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { Log.i(TAG, "onCreateOptionsMenu in " + this + ": " + menu); mOptionsMenu = menu; + // note: icons removed for now because the cause the new action + // bar UI to be very confusing. menu.add(0, SORT_ORDER_ALPHA, 1, R.string.sort_order_alpha) - .setIcon(android.R.drawable.ic_menu_sort_alphabetically) + //.setIcon(android.R.drawable.ic_menu_sort_alphabetically) .setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM); menu.add(0, SORT_ORDER_SIZE, 2, R.string.sort_order_size) - .setIcon(android.R.drawable.ic_menu_sort_by_size) + //.setIcon(android.R.drawable.ic_menu_sort_by_size) .setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM); menu.add(0, SHOW_RUNNING_SERVICES, 3, R.string.show_running_services) .setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM); @@ -722,8 +728,10 @@ public class ManageApplications extends Fragment implements mApplicationsAdapter.rebuild(mFilterApps, mSortOrder); } } else if (menuId == SHOW_RUNNING_SERVICES) { + mShowBackground = false; mRunningProcessesView.mAdapter.setShowBackground(false); } else if (menuId == SHOW_BACKGROUND_PROCESSES) { + mShowBackground = true; mRunningProcessesView.mAdapter.setShowBackground(true); } updateOptionsMenu(); @@ -838,6 +846,7 @@ public class ManageApplications extends Fragment implements } else if (which == VIEW_RUNNING) { if (!mCreatedRunning) { mRunningProcessesView.doCreate(null); + mRunningProcessesView.mAdapter.setShowBackground(mShowBackground); mCreatedRunning = true; } boolean haveData = true; diff --git a/src/com/android/settings/applications/RunningProcessesView.java b/src/com/android/settings/applications/RunningProcessesView.java index ef5adac761f..1f91c33b7fd 100644 --- a/src/com/android/settings/applications/RunningProcessesView.java +++ b/src/com/android/settings/applications/RunningProcessesView.java @@ -431,15 +431,17 @@ public class RunningProcessesView extends FrameLayout // utility method used to start sub activity private void startServiceDetailsActivity(RunningState.MergedItem mi) { - // start new fragment to display extended information - Bundle args = new Bundle(); - args.putInt(RunningServiceDetails.KEY_UID, mi.mProcess.mUid); - args.putString(RunningServiceDetails.KEY_PROCESS, mi.mProcess.mProcessName); - args.putBoolean(RunningServiceDetails.KEY_BACKGROUND, mAdapter.mShowBackground); - - PreferenceActivity pa = (PreferenceActivity)mOwner.getActivity(); - pa.startPreferencePanel(RunningServiceDetails.class.getName(), args, - R.string.runningservicedetails_settings_title, null, null, 0); + if (mOwner != null) { + // start new fragment to display extended information + Bundle args = new Bundle(); + args.putInt(RunningServiceDetails.KEY_UID, mi.mProcess.mUid); + args.putString(RunningServiceDetails.KEY_PROCESS, mi.mProcess.mProcessName); + args.putBoolean(RunningServiceDetails.KEY_BACKGROUND, mAdapter.mShowBackground); + + PreferenceActivity pa = (PreferenceActivity)mOwner.getActivity(); + pa.startPreferencePanel(RunningServiceDetails.class.getName(), args, + R.string.runningservicedetails_settings_title, null, null, 0); + } } public void onMovedToScrapHeap(View view) {