summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTreeHugger Robot <treehugger-gerrit@google.com>2019-10-24 18:15:13 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2019-10-24 18:15:13 +0000
commit36d39e5e898a4d6264749bd519cd4b5e7ee30561 (patch)
tree7caeedd8c3ff11f75e9244c97babb3b1036b2f9e
parentab2e1ec8e5eac06f3288d57a9591a609cd0ece8e (diff)
parent274d2fc11d0dddbfc2f4da5e1c579da72de9e32e (diff)
downloadandroid_packages_apps_PackageInstaller-36d39e5e898a4d6264749bd519cd4b5e7ee30561.tar.gz
android_packages_apps_PackageInstaller-36d39e5e898a4d6264749bd519cd4b5e7ee30561.tar.bz2
android_packages_apps_PackageInstaller-36d39e5e898a4d6264749bd519cd4b5e7ee30561.zip
Merge "Fix crash when role data isn't loaded after restoring state." into qt-qpr1-dev
-rw-r--r--src/com/android/packageinstaller/role/ui/RequestRoleFragment.java13
1 files changed, 10 insertions, 3 deletions
diff --git a/src/com/android/packageinstaller/role/ui/RequestRoleFragment.java b/src/com/android/packageinstaller/role/ui/RequestRoleFragment.java
index 7991a2fb..d4a09bc5 100644
--- a/src/com/android/packageinstaller/role/ui/RequestRoleFragment.java
+++ b/src/com/android/packageinstaller/role/ui/RequestRoleFragment.java
@@ -226,7 +226,7 @@ public class RequestRoleFragment extends DialogFragment {
// Postponed to onStart() so that the list view in dialog is created.
mViewModel = ViewModelProviders.of(this, new RequestRoleViewModel.Factory(mRole,
requireActivity().getApplication())).get(RequestRoleViewModel.class);
- mViewModel.getRoleLiveData().observe(this, mAdapter::replace);
+ mViewModel.getRoleLiveData().observe(this, this::onRoleDataChanged);
mViewModel.getManageRoleHolderStateLiveData().observe(this,
this::onManageRoleHolderStateChanged);
}
@@ -262,6 +262,12 @@ public class RequestRoleFragment extends DialogFragment {
setDeniedOnceAndFinish();
}
+ private void onRoleDataChanged(
+ @NonNull List<Pair<ApplicationInfo, Boolean>> qualifyingApplications) {
+ mAdapter.replace(qualifyingApplications);
+ updateUi();
+ }
+
private void onItemClicked(int position) {
mAdapter.onItemClicked(position);
updateUi();
@@ -344,8 +350,9 @@ public class RequestRoleFragment extends DialogFragment {
boolean dontAskAgain = mDontAskAgainCheck != null && mDontAskAgainCheck.isChecked();
mAdapter.setDontAskAgain(dontAskAgain);
AlertDialog dialog = getDialog();
- dialog.getButton(AlertDialog.BUTTON_POSITIVE).setEnabled(enabled && (dontAskAgain
- || !mAdapter.isHolderApplicationChecked()));
+ boolean hasRoleData = mViewModel.getRoleLiveData().getValue() != null;
+ dialog.getButton(AlertDialog.BUTTON_POSITIVE).setEnabled(enabled && hasRoleData
+ && (dontAskAgain || !mAdapter.isHolderApplicationChecked()));
dialog.getButton(AlertDialog.BUTTON_NEGATIVE).setEnabled(enabled);
}