summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChuck Liao <chuckliao@google.com>2020-09-07 21:55:30 +0800
committerChuck Liao <chuckliao@google.com>2020-09-07 22:12:51 +0800
commitb17d15044c5f81b49ae094167bc49c940acb17f0 (patch)
treeac192f40b87ec1ebd52abeb534d2239f07080fde
parentcb187dbd62b7bdcb405252f4ae864d3e273376a0 (diff)
downloadWallpaperPicker2-b17d15044c5f81b49ae094167bc49c940acb17f0.tar.gz
Fix the crash when applying daily wallpaper without network connection
It's because CustomizationPickerActivity is cast to BaseActivity to call isSafeToCommitFragmentTransaction(), but it is not a BaseActivity. Extract isSafeToCommitFragmentTransaction() to an interface to let CustomizationPickerActivity to implement it. Bug: 167943713 Change-Id: I497620f86f5309392761ce11e19bc183a70178cb
-rwxr-xr-xsrc/com/android/wallpaper/picker/BaseActivity.java3
-rw-r--r--src/com/android/wallpaper/picker/FragmentTransactionChecker.java29
-rwxr-xr-xsrc/com/android/wallpaper/picker/individual/IndividualPickerFragment.java3
3 files changed, 33 insertions, 2 deletions
diff --git a/src/com/android/wallpaper/picker/BaseActivity.java b/src/com/android/wallpaper/picker/BaseActivity.java
index 7f2ea604..25a2b2ac 100755
--- a/src/com/android/wallpaper/picker/BaseActivity.java
+++ b/src/com/android/wallpaper/picker/BaseActivity.java
@@ -21,7 +21,7 @@ import androidx.appcompat.app.AppCompatActivity;
* Base activity that keeps track of whether fragment transactions are safe to commit given the
* activity's current lifecycle state.
*/
-public class BaseActivity extends AppCompatActivity {
+public class BaseActivity extends AppCompatActivity implements FragmentTransactionChecker {
private boolean mIsSafeToCommitFragmentTransaction;
@@ -37,6 +37,7 @@ public class BaseActivity extends AppCompatActivity {
mIsSafeToCommitFragmentTransaction = false;
}
+ @Override
public boolean isSafeToCommitFragmentTransaction() {
return mIsSafeToCommitFragmentTransaction;
}
diff --git a/src/com/android/wallpaper/picker/FragmentTransactionChecker.java b/src/com/android/wallpaper/picker/FragmentTransactionChecker.java
new file mode 100644
index 00000000..c25a41ff
--- /dev/null
+++ b/src/com/android/wallpaper/picker/FragmentTransactionChecker.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.wallpaper.picker;
+
+/**
+ * An interface for a class to keep track of whether fragment transactions are safe to commit given
+ * the activity's current lifecycle state.
+ */
+public interface FragmentTransactionChecker {
+ /**
+ * Checks if the fragment transactions are safe to commit
+ *
+ * @return {@code true} if it is safe; {@code false} otherwise.
+ */
+ boolean isSafeToCommitFragmentTransaction();
+}
diff --git a/src/com/android/wallpaper/picker/individual/IndividualPickerFragment.java b/src/com/android/wallpaper/picker/individual/IndividualPickerFragment.java
index 5fd0e7ac..260d121f 100755
--- a/src/com/android/wallpaper/picker/individual/IndividualPickerFragment.java
+++ b/src/com/android/wallpaper/picker/individual/IndividualPickerFragment.java
@@ -78,6 +78,7 @@ import com.android.wallpaper.module.WallpaperSetter;
import com.android.wallpaper.picker.BaseActivity;
import com.android.wallpaper.picker.BottomActionBarFragment;
import com.android.wallpaper.picker.CurrentWallpaperBottomSheetPresenter;
+import com.android.wallpaper.picker.FragmentTransactionChecker;
import com.android.wallpaper.picker.MyPhotosStarter.MyPhotosStarterProvider;
import com.android.wallpaper.picker.PreviewActivity;
import com.android.wallpaper.picker.RotationStarter;
@@ -816,7 +817,7 @@ public class IndividualPickerFragment extends BottomActionBarFragment
}
private void showStartRotationErrorDialog(@NetworkPreference int networkPreference) {
- BaseActivity activity = (BaseActivity) getActivity();
+ FragmentTransactionChecker activity = (FragmentTransactionChecker) getActivity();
if (activity != null) {
StartRotationErrorDialogFragment startRotationErrorDialogFragment =
StartRotationErrorDialogFragment.newInstance(networkPreference);