diff options
| author | John Reck <jreck@google.com> | 2010-12-16 12:46:57 -0800 |
|---|---|---|
| committer | Android (Google) Code Review <android-gerrit@google.com> | 2010-12-16 12:46:57 -0800 |
| commit | 5a54179760ef29c1693c37b45073bcfbb65540b6 (patch) | |
| tree | e90a85288db7b293514a4f0f69c3d5db6bfdce47 /src | |
| parent | ee5cfce99a893a9a7437ea34943e45d99ee8632f (diff) | |
| parent | 45ceccb271fcbf301c7c3d5e0c77ae1e53f28cda (diff) | |
| download | packages_apps_Browser-5a54179760ef29c1693c37b45073bcfbb65540b6.tar.gz packages_apps_Browser-5a54179760ef29c1693c37b45073bcfbb65540b6.tar.bz2 packages_apps_Browser-5a54179760ef29c1693c37b45073bcfbb65540b6.zip | |
Merge "Fix crash when rotating in settings"
Diffstat (limited to 'src')
| -rw-r--r-- | src/com/android/browser/preferences/PersonalPreferencesFragment.java | 41 |
1 files changed, 32 insertions, 9 deletions
diff --git a/src/com/android/browser/preferences/PersonalPreferencesFragment.java b/src/com/android/browser/preferences/PersonalPreferencesFragment.java index 0620df284..38ebbaea7 100644 --- a/src/com/android/browser/preferences/PersonalPreferencesFragment.java +++ b/src/com/android/browser/preferences/PersonalPreferencesFragment.java @@ -33,6 +33,7 @@ import android.content.Context; import android.content.DialogInterface; import android.content.OperationApplicationException; import android.content.SharedPreferences; +import android.content.SharedPreferences.OnSharedPreferenceChangeListener; import android.database.Cursor; import android.os.AsyncTask; import android.os.Bundle; @@ -62,6 +63,7 @@ public class PersonalPreferencesFragment extends PreferenceFragment Preference mChromeSync; boolean mEnabled; + SharedPreferences mSharedPrefs; @Override public void onCreate(Bundle savedInstanceState) { @@ -76,11 +78,32 @@ public class PersonalPreferencesFragment extends PreferenceFragment super.onResume(); // Setup the proper state for the sync with chrome item - Context context = getActivity(); mChromeSync = findPreference(PREF_CHROME_SYNC); - refreshUi(context); + refreshUi(); + mSharedPrefs = PreferenceManager.getDefaultSharedPreferences(getActivity()); + mSharedPrefs.registerOnSharedPreferenceChangeListener(mListener); } + @Override + public void onPause() { + super.onPause(); + + mSharedPrefs.unregisterOnSharedPreferenceChangeListener(mListener); + } + + OnSharedPreferenceChangeListener mListener + = new OnSharedPreferenceChangeListener() { + @Override + public void onSharedPreferenceChanged( + SharedPreferences sharedPreferences, String key) { + if (BrowserBookmarksPage.PREF_ACCOUNT_NAME.equals(key) + || BrowserBookmarksPage.PREF_ACCOUNT_TYPE.equals(key)) { + refreshUi(); + } + } + + }; + private class GetAccountsTask extends AsyncTask<Void, Void, String> { private Context mContext; @@ -88,6 +111,7 @@ public class PersonalPreferencesFragment extends PreferenceFragment mContext = ctx; } + @Override protected String doInBackground(Void... unused) { AccountManager am = (AccountManager) mContext.getSystemService(Context.ACCOUNT_SERVICE); Account[] accounts = am.getAccountsByType("com.google"); @@ -120,6 +144,7 @@ public class PersonalPreferencesFragment extends PreferenceFragment return null; } + @Override protected void onPostExecute(String summary) { if (summary != null) { mChromeSync.setSummary(summary); @@ -127,8 +152,8 @@ public class PersonalPreferencesFragment extends PreferenceFragment } } - void refreshUi(Context context) { - new GetAccountsTask(context).execute(); + void refreshUi() { + new GetAccountsTask(getActivity()).execute(); PreferenceScreen autoFillSettings = (PreferenceScreen)findPreference(BrowserSettings.PREF_AUTOFILL_PROFILE); @@ -150,7 +175,7 @@ public class PersonalPreferencesFragment extends PreferenceFragment return true; } - final class AccountChooserDialog extends DialogFragment + public static class AccountChooserDialog extends DialogFragment implements DialogInterface.OnClickListener { AlertDialog mDialog; @@ -184,12 +209,11 @@ public class PersonalPreferencesFragment extends PreferenceFragment String accountName = mDialog.getListView().getAdapter().getItem(which).toString(); SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getActivity()); prefs.edit().putString(BrowserBookmarksPage.PREF_ACCOUNT_NAME, accountName).apply(); - refreshUi(getActivity()); dismiss(); } } - final class ImportWizardDialog extends DialogFragment implements OnClickListener { + public static class ImportWizardDialog extends DialogFragment implements OnClickListener { View mRemoveButton; View mCancelButton; String mDefaultAccount; @@ -257,7 +281,6 @@ public class PersonalPreferencesFragment extends PreferenceFragment ContentResolver.setIsSyncable(account, BrowserContract.AUTHORITY, 1); } - refreshUi(getActivity()); dismiss(); } @@ -348,7 +371,7 @@ public class PersonalPreferencesFragment extends PreferenceFragment .withSelection(Bookmarks.ACCOUNT_NAME + " IS NULL AND " + Bookmarks._ID + "<>1", null) .build()); - + try { resolver.applyBatch(BrowserContract.AUTHORITY, ops); } catch (RemoteException e) { |
