summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDanesh M <daneshm90@gmail.com>2015-09-09 23:55:25 -0700
committerLorDClockaN <davor@losinj.com>2015-09-14 16:24:24 +0200
commit91d1d2d56450a8bb062dd3579aa3fb08deca7e0a (patch)
treefb0db5d75f0a77120a55491dbcb79a81371b8493
parent367f92d0701c52d9ef3638f3c183b9b59331981c (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.java17
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();