From 14e084e1c9cab68f4ba2b324f6c4377032e4e6bf Mon Sep 17 00:00:00 2001 From: LoveSy Date: Wed, 7 Jul 2021 11:49:02 +0800 Subject: [PATCH] [app] Fix crash of RepoItemFrag when module not found (#806) * [app] Fix crash of RepoItemFrag when module not found * Fix popup * Fix tablet --- app/build.gradle.kts | 5 +- .../org/lsposed/manager/repo/RepoLoader.java | 2 +- .../manager/ui/activity/MainActivity.java | 10 ++ .../manager/ui/fragment/BaseFragment.java | 11 +- .../manager/ui/fragment/RepoItemFragment.java | 10 +- .../main/res/layout-sw600dp/activity_main.xml | 56 +++++++++ .../main/res/layout-sw600dp/fragment_main.xml | 53 -------- app/src/main/res/navigation/nav_graph.xml | 26 +++- app/src/main/res/navigation/sub_nav_graph.xml | 115 ------------------ build.gradle.kts | 2 +- core/build.gradle.kts | 2 +- 11 files changed, 101 insertions(+), 191 deletions(-) create mode 100644 app/src/main/res/layout-sw600dp/activity_main.xml delete mode 100644 app/src/main/res/layout-sw600dp/fragment_main.xml delete mode 100644 app/src/main/res/navigation/sub_nav_graph.xml diff --git a/app/build.gradle.kts b/app/build.gradle.kts index d24f9f06..cd9ca859 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -194,16 +194,17 @@ dependencies { implementation("androidx.activity:activity:1.2.3") implementation("androidx.browser:browser:1.3.0") implementation("androidx.constraintlayout:constraintlayout:2.0.4") - implementation("androidx.core:core:1.5.0") + implementation("androidx.core:core:1.6.0") implementation("androidx.fragment:fragment:1.3.5") implementation("androidx.navigation:navigation-fragment:$navVersion") implementation("androidx.navigation:navigation-ui:$navVersion") implementation("androidx.recyclerview:recyclerview:1.2.1") + implementation("androidx.slidingpanelayout:slidingpanelayout:1.2.0-alpha03") implementation("androidx.swiperefreshlayout:swiperefreshlayout:1.1.0") implementation("com.caverock:androidsvg-aar:1.4") implementation("com.github.bumptech.glide:glide:$glideVersion") implementation("com.github.bumptech.glide:okhttp3-integration:$glideVersion") - implementation("com.google.android.material:material:1.3.0") + implementation("com.google.android.material:material:1.4.0") implementation("com.google.code.gson:gson:2.8.7") implementation("com.takisoft.preferencex:preferencex:1.1.0") implementation("com.takisoft.preferencex:preferencex-colorpicker:1.1.0") diff --git a/app/src/main/java/org/lsposed/manager/repo/RepoLoader.java b/app/src/main/java/org/lsposed/manager/repo/RepoLoader.java index 8e3754f2..f27a0449 100644 --- a/app/src/main/java/org/lsposed/manager/repo/RepoLoader.java +++ b/app/src/main/java/org/lsposed/manager/repo/RepoLoader.java @@ -182,7 +182,7 @@ public class RepoLoader { } public OnlineModule getOnlineModule(String packageName) { - return onlineModules.get(packageName); + return packageName == null ? null : onlineModules.get(packageName); } public Collection getOnlineModules() { diff --git a/app/src/main/java/org/lsposed/manager/ui/activity/MainActivity.java b/app/src/main/java/org/lsposed/manager/ui/activity/MainActivity.java index 691ebd5a..d49c1943 100644 --- a/app/src/main/java/org/lsposed/manager/ui/activity/MainActivity.java +++ b/app/src/main/java/org/lsposed/manager/ui/activity/MainActivity.java @@ -26,6 +26,7 @@ import android.os.Bundle; import android.text.TextUtils; import android.view.KeyEvent; import android.view.MotionEvent; +import android.view.View; import androidx.annotation.NonNull; import androidx.navigation.NavController; @@ -84,6 +85,15 @@ public class MainActivity extends BaseActivity { return; } NavController navController = navHostFragment.getNavController(); + if (binding.homeFragment != null) { + navController.addOnDestinationChangedListener((controller, destination, arguments) -> { + if (destination.getId() == R.id.main_fragment) { + binding.navHostFragment.setVisibility(View.GONE); + } else { + binding.navHostFragment.setVisibility(View.VISIBLE); + } + }); + } if (intent.getAction() != null && intent.getAction().equals("android.intent.action.APPLICATION_PREFERENCES")) { navController.navigate(R.id.action_settings_fragment); } else if (intent.hasExtra("modulePackageName")) { diff --git a/app/src/main/java/org/lsposed/manager/ui/fragment/BaseFragment.java b/app/src/main/java/org/lsposed/manager/ui/fragment/BaseFragment.java index 46351a52..e1985ba1 100644 --- a/app/src/main/java/org/lsposed/manager/ui/fragment/BaseFragment.java +++ b/app/src/main/java/org/lsposed/manager/ui/fragment/BaseFragment.java @@ -35,16 +35,7 @@ public class BaseFragment extends Fragment { } public NavController getNavController() { - View view = getView(); - if (view == null) { - return NavHostFragment.findNavController(this); - } - View tabletFragmentContainer = view.findViewById(R.id.tablet_nav_container); - if (tabletFragmentContainer != null) { - return Navigation.findNavController(tabletFragmentContainer); - } else { - return Navigation.findNavController(view); - } + return NavHostFragment.findNavController(this); } public void setupToolbar(Toolbar toolbar, int title) { diff --git a/app/src/main/java/org/lsposed/manager/ui/fragment/RepoItemFragment.java b/app/src/main/java/org/lsposed/manager/ui/fragment/RepoItemFragment.java index 2fa6f135..53455869 100644 --- a/app/src/main/java/org/lsposed/manager/ui/fragment/RepoItemFragment.java +++ b/app/src/main/java/org/lsposed/manager/ui/fragment/RepoItemFragment.java @@ -106,8 +106,9 @@ public class RepoItemFragment extends BaseFragment implements RepoLoader.Listene @Override public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { binding = FragmentPagerBinding.inflate(getLayoutInflater(), container, false); - String modulePackageName = getArguments().getString("modulePackageName"); - String moduleName = getArguments().getString("moduleName"); + if (module == null) return binding.getRoot(); + String modulePackageName = module.getName(); + String moduleName = module.getDescription(); binding.getRoot().bringChildToFront(binding.appBar); setupToolbar(binding.toolbar, moduleName, R.menu.menu_repo_item); binding.toolbar.setSubtitle(modulePackageName); @@ -137,9 +138,10 @@ public class RepoItemFragment extends BaseFragment implements RepoLoader.Listene RepoLoader.getInstance().addListener(this); super.onCreate(savedInstanceState); - String modulePackageName = getArguments().getString("modulePackageName"); + String modulePackageName = getArguments() == null ? null : getArguments().getString("modulePackageName"); module = RepoLoader.getInstance().getOnlineModule(modulePackageName); - + if (module == null) + getNavController().navigate(R.id.action_repo_item_fragment_to_repo_fragment); } private void renderGithubMarkdown(WebView view, String text) { diff --git a/app/src/main/res/layout-sw600dp/activity_main.xml b/app/src/main/res/layout-sw600dp/activity_main.xml new file mode 100644 index 00000000..b8e6c294 --- /dev/null +++ b/app/src/main/res/layout-sw600dp/activity_main.xml @@ -0,0 +1,56 @@ + + + + + + + + + + + + + diff --git a/app/src/main/res/layout-sw600dp/fragment_main.xml b/app/src/main/res/layout-sw600dp/fragment_main.xml deleted file mode 100644 index c06d65ab..00000000 --- a/app/src/main/res/layout-sw600dp/fragment_main.xml +++ /dev/null @@ -1,53 +0,0 @@ - - - - - - - - - - - - diff --git a/app/src/main/res/navigation/nav_graph.xml b/app/src/main/res/navigation/nav_graph.xml index a465f67e..ea61a5e2 100644 --- a/app/src/main/res/navigation/nav_graph.xml +++ b/app/src/main/res/navigation/nav_graph.xml @@ -125,6 +125,16 @@ + + + app:popExitAnim="@anim/fragment_exit_pop" + app:popUpTo="@id/settings_fragment" + app:popUpToInclusive="true" /> + app:popExitAnim="@anim/fragment_exit_pop" + app:popUpTo="@id/logs_fragment" + app:popUpToInclusive="true" /> + app:popExitAnim="@anim/fragment_exit_pop" + app:popUpTo="@id/repo_fragment" + app:popUpToInclusive="true" /> + app:popExitAnim="@anim/fragment_exit_pop" + app:popUpTo="@id/modules_fragment" + app:popUpToInclusive="true" /> - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/build.gradle.kts b/build.gradle.kts index 0adcfa93..3fd81ca2 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -25,7 +25,7 @@ buildscript { mavenCentral() } dependencies { - classpath("com.android.tools.build:gradle:7.0.0-beta04") + classpath("com.android.tools.build:gradle:7.0.0-beta05") classpath("org.eclipse.jgit:org.eclipse.jgit:5.10.0.202012080955-r") classpath("androidx.navigation:navigation-safe-args-gradle-plugin:2.3.5") } diff --git a/core/build.gradle.kts b/core/build.gradle.kts index ccc8e76e..4e59b9dc 100644 --- a/core/build.gradle.kts +++ b/core/build.gradle.kts @@ -60,7 +60,7 @@ dependencies { implementation("dev.rikka.ndk:riru:${moduleMinRiruVersionName}") implementation("dev.rikka.ndk.thirdparty:cxx:1.1.0") implementation("io.github.vvb2060.ndk:dobby:1.2") - implementation("com.android.tools.build:apksig:7.0.0-beta03") + implementation("com.android.tools.build:apksig:7.0.0-beta05") implementation("org.apache.commons:commons-lang3:3.12.0") implementation("de.upb.cs.swt:axml:2.1.1") compileOnly(project(":hiddenapi-stubs"))