From 849729a9490a7cad00c70cb083dfd2ebdf08a466 Mon Sep 17 00:00:00 2001 From: LoveSy Date: Wed, 15 Dec 2021 14:42:00 +0800 Subject: [PATCH] [app] Fix toast (#1485) --- .../manager/ui/fragment/BaseFragment.java | 27 ++++++++----------- 1 file changed, 11 insertions(+), 16 deletions(-) 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 a95d94bf..17539d9f 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 @@ -19,7 +19,8 @@ package org.lsposed.manager.ui.fragment; -import android.app.Activity; +import android.os.Handler; +import android.os.Looper; import android.view.View; import android.widget.Toast; @@ -39,6 +40,8 @@ import java.util.concurrent.Future; import java.util.concurrent.FutureTask; public class BaseFragment extends Fragment { + private final Handler uiHandler = new Handler(Looper.getMainLooper()); + public void navigateUp() { getNavController().navigateUp(); } @@ -81,29 +84,21 @@ public class BaseFragment extends Fragment { } public void runOnUiThread(Runnable runnable) { - Activity activity = getActivity(); - if (activity != null && !activity.isFinishing()) { - activity.runOnUiThread(runnable); - } + uiHandler.post(runnable); } public Future runOnUiThread(Callable callable) { - Activity activity = getActivity(); - if (activity != null && !activity.isFinishing()) { - var task = new FutureTask<>(callable); - activity.runOnUiThread(task); - return task; - } else { - return new FutureTask<>(() -> null); - } + var task = new FutureTask<>(callable); + runOnUiThread(task); + return task; } public void showHint(@StringRes int res, boolean lengthShort, @StringRes int actionRes, View.OnClickListener action) { - showHint(getString(res), lengthShort, getString(actionRes), action); + showHint(App.getInstance().getString(res), lengthShort, App.getInstance().getString(actionRes), action); } public void showHint(@StringRes int res, boolean lengthShort) { - showHint(getString(res), lengthShort, null, null); + showHint(App.getInstance().getString(res), lengthShort, null, null); } public void showHint(CharSequence str, boolean lengthShort) { @@ -120,7 +115,7 @@ public class BaseFragment extends Fragment { return; } } - Toast.makeText(requireContext(), str, lengthShort ? Toast.LENGTH_SHORT : Toast.LENGTH_LONG).show(); + runOnUiThread(Toast.makeText(App.getInstance(), str, lengthShort ? Toast.LENGTH_SHORT : Toast.LENGTH_LONG)::show); } }