diff options
| author | Danesh M <daneshm90@gmail.com> | 2015-09-09 23:55:25 -0700 |
|---|---|---|
| committer | LorDClockaN <davor@losinj.com> | 2015-09-14 16:24:24 +0200 |
| commit | 91d1d2d56450a8bb062dd3579aa3fb08deca7e0a (patch) | |
| tree | fb0db5d75f0a77120a55491dbcb79a81371b8493 | |
| parent | 367f92d0701c52d9ef3638f3c183b9b59331981c (diff) | |
Mms : Fix OptionsActivity fragment instantiation
- Ensure fragment has a public constructor w/ no arguments
- Ensure thread id is passed via a bundle
Repro :
1. Open a conversation in mms
2. Menu -> Conversation options
3. Statusbar -> Settings -> Change locale to something else
4. Via recents switch back to sms
5. Enjoy the crash
issue-id: CYNGNOS-929
Change-Id: I224565a6d0046e3f4a0b5b18a9b07e3f2699a29c
(cherry picked from commit 3dfb8bf751e4084dbb6cb4b8dbf3766afec03d53)
| -rw-r--r-- | src/com/android/mms/ui/ConversationOptionsActivity.java | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/src/com/android/mms/ui/ConversationOptionsActivity.java b/src/com/android/mms/ui/ConversationOptionsActivity.java index dfcc075b..7a62dd9f 100644 --- a/src/com/android/mms/ui/ConversationOptionsActivity.java +++ b/src/com/android/mms/ui/ConversationOptionsActivity.java @@ -27,7 +27,7 @@ public class ConversationOptionsActivity extends Activity { private long mThreadId; private PreferenceFragment mFragment; - public class ConversationOptionsFragment extends PreferenceFragment + public static class ConversationOptionsFragment extends PreferenceFragment implements OnPreferenceChangeListener, OnPreferenceClickListener { private static final String KEY_NOTIFICATION_ENABLED = "convopt_key_notification_enabled"; private static final String KEY_NOTIFICATION_RINGTONE = "convopt_key_notification_ringtone"; @@ -35,6 +35,9 @@ public class ConversationOptionsActivity extends Activity { private static final String KEY_VIBRATE_PATTERN = "convopt_key_vibrate_pattern"; private static final String KEY_NOTIFICATIONS_CATEGORY = "convopt_key_notifications_category"; private static final String KEY_RESET_TO_DEFAULT = "convopt_key_reset_to_default"; + private static final String THREAD_ID_EXTRA = "thread_id"; + + private long mThreadId; private CheckBoxPreference mNotificationEnabled; private RingtonePreference mNotificationRingtone; @@ -44,10 +47,13 @@ public class ConversationOptionsActivity extends Activity { private PreferenceCategory mNotificationsCategory; private CMConversationSettings mConversationSetting; + public ConversationOptionsFragment() { + } + @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - + mThreadId = getArguments().getLong(THREAD_ID_EXTRA); new AsyncTask<Long, Void, CMConversationSettings>() { @Override protected CMConversationSettings doInBackground(Long... params) { @@ -88,7 +94,7 @@ public class ConversationOptionsActivity extends Activity { mVibrateEnabled.setOnPreferenceChangeListener(this); mVibratePattern.setOnPreferenceChangeListener(this); - Vibrator vibrator = (Vibrator) getSystemService(VIBRATOR_SERVICE); + Vibrator vibrator = (Vibrator) getActivity().getSystemService(VIBRATOR_SERVICE); if (!vibrator.hasVibrator()) { mNotificationsCategory.removePreference(mVibrateEnabled); mNotificationsCategory.removePreference(mVibratePattern); @@ -134,7 +140,7 @@ public class ConversationOptionsActivity extends Activity { } private void updateUI() { - if (getActivity().isFinishing()) return; + if (getActivity() == null || getActivity().isFinishing()) return; mNotificationEnabled.setEnabled(true); mNotificationRingtone.setEnabled(true); @@ -248,6 +254,9 @@ public class ConversationOptionsActivity extends Activity { } mFragment = new ConversationOptionsFragment(); + Bundle bundle = new Bundle(); + bundle.putLong(ConversationOptionsFragment.THREAD_ID_EXTRA, mThreadId); + mFragment.setArguments(bundle); getFragmentManager().beginTransaction().replace(android.R.id.content, mFragment).commit(); ActionBar actionBar = getActionBar(); |
