Merge "Guard against the exceptions when launching a non-existing fragment" into sc-dev

This commit is contained in:
Jason Chiu
2021-07-01 07:10:56 +00:00
committed by Android (Google) Code Review
2 changed files with 15 additions and 9 deletions

View File

@@ -574,7 +574,7 @@ public class SettingsActivity extends SettingsBaseActivity
/**
* Switch to a specific Fragment with taking care of validation, Title and BackStack
*/
private Fragment switchToFragment(String fragmentName, Bundle args, boolean validate,
private void switchToFragment(String fragmentName, Bundle args, boolean validate,
int titleResId, CharSequence title) {
Log.d(LOG_TAG, "Switching to fragment " + fragmentName);
if (validate && !isValidFragment(fragmentName)) {
@@ -582,6 +582,9 @@ public class SettingsActivity extends SettingsBaseActivity
+ fragmentName);
}
Fragment f = Utils.getTargetFragment(this, fragmentName, args);
if (f == null) {
return;
}
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.main_content, f);
if (titleResId > 0) {
@@ -592,7 +595,6 @@ public class SettingsActivity extends SettingsBaseActivity
transaction.commitAllowingStateLoss();
getSupportFragmentManager().executePendingTransactions();
Log.d(LOG_TAG, "Executed frag manager pendingTransactions");
return f;
}
private void updateTilesList() {

View File

@@ -1158,13 +1158,17 @@ public final class Utils extends com.android.settingslib.Utils {
== ProfileSelectFragment.ProfileType.PERSONAL : false;
final boolean isWork = args != null ? args.getInt(ProfileSelectFragment.EXTRA_PROFILE)
== ProfileSelectFragment.ProfileType.WORK : false;
if (activity.getSystemService(UserManager.class).getUserProfiles().size() > 1
&& ProfileFragmentBridge.FRAGMENT_MAP.get(fragmentName) != null
&& !isWork && !isPersonal) {
f = Fragment.instantiate(activity, ProfileFragmentBridge.FRAGMENT_MAP.get(fragmentName),
args);
} else {
f = Fragment.instantiate(activity, fragmentName, args);
try {
if (activity.getSystemService(UserManager.class).getUserProfiles().size() > 1
&& ProfileFragmentBridge.FRAGMENT_MAP.get(fragmentName) != null
&& !isWork && !isPersonal) {
f = Fragment.instantiate(activity,
ProfileFragmentBridge.FRAGMENT_MAP.get(fragmentName), args);
} else {
f = Fragment.instantiate(activity, fragmentName, args);
}
} catch (Exception e) {
Log.e(TAG, "Unable to get target fragment", e);
}
return f;
}