瀏覽代碼

Fix testConfirmationDialogWithThreeActionRTL ss-test

java.lang.IllegalStateException: Fragment OCFileListFragment{e3507e5} (fc14c972-6cfd-4593-af3a-5a1b0bcbc8a8) not attached to an activity.

Signed-off-by: alperozturk <alper_ozturk@proton.me>
alperozturk 8 月之前
父節點
當前提交
0a250857bf

+ 11 - 0
app/src/main/java/com/nextcloud/utils/extensions/FragmentExtensions.kt

@@ -16,3 +16,14 @@ inline fun <reified T : Any> Fragment.typedActivity(): T? {
         null
     }
 }
+
+/**
+ * Extension for Java Classes
+ */
+fun <T : Any> Fragment.getTypedActivity(type: Class<T>): T? {
+    return if (isAdded && activity != null && type.isInstance(activity)) {
+        type.cast(activity)
+    } else {
+        null
+    }
+}

+ 3 - 2
app/src/main/java/com/owncloud/android/ui/fragment/ExtendedListFragment.java

@@ -43,9 +43,9 @@ import android.widget.TextView;
 import com.google.android.material.button.MaterialButton;
 import com.nextcloud.client.account.UserAccountManager;
 import com.nextcloud.client.di.Injectable;
-import com.nextcloud.client.network.ConnectivityService;
 import com.nextcloud.client.preferences.AppPreferences;
 import com.nextcloud.client.preferences.AppPreferencesImpl;
+import com.nextcloud.utils.extensions.FragmentExtensionsKt;
 import com.owncloud.android.MainApp;
 import com.owncloud.android.R;
 import com.owncloud.android.databinding.ListFragmentBinding;
@@ -650,7 +650,8 @@ public class ExtendedListFragment extends Fragment implements
      */
     public void setEmptyListLoadingMessage() {
         new Handler(Looper.getMainLooper()).post(() -> {
-            if (requireActivity() instanceof FileActivity fileActivity) {
+            FileActivity fileActivity = FragmentExtensionsKt.getTypedActivity(this, FileActivity.class);
+            if (fileActivity != null) {
                 fileActivity.connectivityService.isNetworkAndServerAvailable(result -> {
                     if (!result || mEmptyListContainer == null || mEmptyListMessage == null) return;