AppListFragment: try to avoid NPEs arising from getActivity()

This commit is contained in:
Peter Cai 2018-11-21 19:41:39 +08:00
parent 625b9a66dc
commit e6f7172b70
No known key found for this signature in database
GPG key ID: 71F5FB4E4F3FD54F
2 changed files with 17 additions and 5 deletions

View file

@ -25,7 +25,6 @@ import androidx.annotation.Nullable;
import androidx.appcompat.app.AlertDialog; import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.view.ActionMode; import androidx.appcompat.view.ActionMode;
import androidx.fragment.app.Fragment;
import androidx.localbroadcastmanager.content.LocalBroadcastManager; import androidx.localbroadcastmanager.content.LocalBroadcastManager;
import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView;
@ -44,7 +43,7 @@ import net.typeblog.shelter.util.Utility;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
public class AppListFragment extends Fragment { public class AppListFragment extends BaseFragment {
private static final String BROADCAST_REFRESH = "net.typeblog.shelter.broadcast.REFRESH"; private static final String BROADCAST_REFRESH = "net.typeblog.shelter.broadcast.REFRESH";
// Menu Items // Menu Items
@ -179,7 +178,7 @@ public class AppListFragment extends Fragment {
LocalStorageManager.PREF_AUTO_FREEZE_LIST_WORK_PROFILE, LocalStorageManager.PREF_AUTO_FREEZE_LIST_WORK_PROFILE,
apps); apps);
} }
getActivity().runOnUiThread(() -> { runOnUiThread(() -> {
mSwipeRefresh.setRefreshing(false); mSwipeRefresh.setRefreshing(false);
mAdapter.setData(apps); mAdapter.setData(apps);
mRefreshing = false; mRefreshing = false;
@ -360,7 +359,7 @@ public class AppListFragment extends Fragment {
IAppInstallCallback.Stub callback = new IAppInstallCallback.Stub() { IAppInstallCallback.Stub callback = new IAppInstallCallback.Stub() {
@Override @Override
public void callback(int result) { public void callback(int result) {
getActivity().runOnUiThread(() -> runOnUiThread(() ->
installAppCallback(result, app, isInstall)); installAppCallback(result, app, isInstall));
} }
}; };
@ -397,7 +396,7 @@ public class AppListFragment extends Fragment {
mService.loadIcon(app, new ILoadIconCallback.Stub() { mService.loadIcon(app, new ILoadIconCallback.Stub() {
@Override @Override
public void callback(Bitmap icon) { public void callback(Bitmap icon) {
getActivity().runOnUiThread(() -> addUnfreezeShortcut(app, linkedApps, icon)); runOnUiThread(() -> addUnfreezeShortcut(app, linkedApps, icon));
} }
}); });
} catch (RemoteException e) { } catch (RemoteException e) {

View file

@ -0,0 +1,13 @@
package net.typeblog.shelter.ui;
import androidx.fragment.app.Fragment;
// Some utility extensions to the Fragment class...
public abstract class BaseFragment extends Fragment {
// Convenience method to call getActivity().runOnUiThread()
// without bothering about NPEs
protected void runOnUiThread(Runnable task) {
if (getActivity() == null) return;
getActivity().runOnUiThread(task);
}
}