Merge "[Large screen] Fix searched Subsettings back navigation bug" into sc-v2-dev
This commit is contained in:
@@ -63,13 +63,6 @@ public class ActivityEmbeddingRulesController {
|
||||
|
||||
// Set a placeholder for home page.
|
||||
registerHomepagePlaceholderRule();
|
||||
// Set subsettings rule.
|
||||
registerTwoPanePairRule(mContext,
|
||||
getComponentName(Settings.class),
|
||||
getComponentName(SubSettings.class),
|
||||
null /* secondaryIntentAction */,
|
||||
true /* finishPrimaryWithSecondary */,
|
||||
true /* finishSecondaryWithPrimary */);
|
||||
}
|
||||
|
||||
/** Register a SplitPairRule for 2-pane. */
|
||||
@@ -78,7 +71,8 @@ public class ActivityEmbeddingRulesController {
|
||||
ComponentName secondaryComponent,
|
||||
String secondaryIntentAction,
|
||||
boolean finishPrimaryWithSecondary,
|
||||
boolean finishSecondaryWithPrimary) {
|
||||
boolean finishSecondaryWithPrimary,
|
||||
boolean clearTop) {
|
||||
final Set<SplitPairFilter> filters = new HashSet<>();
|
||||
filters.add(new SplitPairFilter(primaryComponent, secondaryComponent,
|
||||
secondaryIntentAction));
|
||||
@@ -86,13 +80,28 @@ public class ActivityEmbeddingRulesController {
|
||||
SplitController.getInstance().registerRule(new SplitPairRule(filters,
|
||||
finishPrimaryWithSecondary,
|
||||
finishSecondaryWithPrimary,
|
||||
true /* clearTop */,
|
||||
clearTop,
|
||||
ActivityEmbeddingUtils.getMinCurrentScreenSplitWidthPx(context),
|
||||
ActivityEmbeddingUtils.getMinSmallestScreenSplitWidthPx(context),
|
||||
ActivityEmbeddingUtils.SPLIT_RATIO,
|
||||
LayoutDirection.LOCALE));
|
||||
}
|
||||
|
||||
/** Register a SplitPairRule for SubSettings if the device supports 2-pane. */
|
||||
public static void registerSubSettingsPairRuleIfNeeded(Context context, boolean clearTop) {
|
||||
if (!ActivityEmbeddingUtils.isEmbeddingActivityEnabled(context)) {
|
||||
return;
|
||||
}
|
||||
|
||||
registerTwoPanePairRule(context,
|
||||
getComponentName(context, Settings.class),
|
||||
getComponentName(context, SubSettings.class),
|
||||
null /* secondaryIntentAction */,
|
||||
true /* finishPrimaryWithSecondary */,
|
||||
true /* finishSecondaryWithPrimary */,
|
||||
clearTop);
|
||||
}
|
||||
|
||||
private void registerHomepagePlaceholderRule() {
|
||||
final Set<ActivityFilter> activityFilters = new HashSet<>();
|
||||
addActivityFilter(activityFilters, SettingsHomepageActivity.class);
|
||||
@@ -131,6 +140,12 @@ public class ActivityEmbeddingRulesController {
|
||||
|
||||
@NonNull
|
||||
private ComponentName getComponentName(Class<? extends Activity> activityClass) {
|
||||
return new ComponentName(mContext.getPackageName(), activityClass.getName());
|
||||
return getComponentName(mContext, activityClass);
|
||||
}
|
||||
|
||||
@NonNull
|
||||
private static ComponentName getComponentName(Context context,
|
||||
Class<? extends Activity> activityClass) {
|
||||
return new ComponentName(context.getPackageName(), activityClass.getName());
|
||||
}
|
||||
}
|
||||
|
@@ -180,7 +180,10 @@ public class DashboardFeatureProviderImpl implements DashboardFeatureProvider {
|
||||
com.android.settings.Settings.class.getName()),
|
||||
new ComponentName(tile.getPackageName(),
|
||||
tile.getComponentName()),
|
||||
null, true, true);
|
||||
null /* secondaryIntentAction */,
|
||||
true /* finishPrimaryWithSecondary */,
|
||||
true /* finishSecondaryWithPrimary */,
|
||||
true /* clearTop */);
|
||||
|
||||
// Highlight preference ui.
|
||||
final TopLevelSettings topLevelSettings = (TopLevelSettings) fragment;
|
||||
|
@@ -239,13 +239,15 @@ public class SettingsHomepageActivity extends FragmentActivity implements
|
||||
targetComponentName,
|
||||
targetIntent.getAction(),
|
||||
true /* finishPrimaryWithSecondary */,
|
||||
true /* finishSecondaryWithPrimary */);
|
||||
true /* finishSecondaryWithPrimary */,
|
||||
true /* clearTop*/);
|
||||
ActivityEmbeddingRulesController.registerTwoPanePairRule(this,
|
||||
new ComponentName(Settings.class.getPackageName(), Settings.class.getName()),
|
||||
targetComponentName,
|
||||
targetIntent.getAction(),
|
||||
true /* finishPrimaryWithSecondary */,
|
||||
true /* finishSecondaryWithPrimary */);
|
||||
true /* finishSecondaryWithPrimary */,
|
||||
true /* clearTop*/);
|
||||
startActivity(targetIntent);
|
||||
}
|
||||
|
||||
|
@@ -36,6 +36,7 @@ import androidx.recyclerview.widget.RecyclerView;
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.SettingsActivity;
|
||||
import com.android.settings.Utils;
|
||||
import com.android.settings.activityembedding.ActivityEmbeddingRulesController;
|
||||
import com.android.settings.activityembedding.ActivityEmbeddingUtils;
|
||||
import com.android.settings.core.SubSettingLauncher;
|
||||
import com.android.settings.dashboard.DashboardFragment;
|
||||
@@ -98,6 +99,10 @@ public class TopLevelSettings extends DashboardFragment implements
|
||||
|
||||
@Override
|
||||
public boolean onPreferenceTreeClick(Preference preference) {
|
||||
// Register SplitPairRule for SubSettings.
|
||||
ActivityEmbeddingRulesController.registerSubSettingsPairRuleIfNeeded(getContext(),
|
||||
true /* clearTop*/);
|
||||
|
||||
setHighlightPreferenceKey(preference.getKey());
|
||||
return super.onPreferenceTreeClick(preference);
|
||||
}
|
||||
|
@@ -25,6 +25,7 @@ import android.os.Bundle;
|
||||
|
||||
import com.android.settings.SettingsActivity;
|
||||
import com.android.settings.SubSettings;
|
||||
import com.android.settings.activityembedding.ActivityEmbeddingRulesController;
|
||||
import com.android.settings.overlay.FeatureFactory;
|
||||
|
||||
/**
|
||||
@@ -53,6 +54,11 @@ public class SearchResultTrampoline extends Activity {
|
||||
args.putInt(EXTRA_SHOW_FRAGMENT_TAB, tab);
|
||||
intent.putExtra(EXTRA_SHOW_FRAGMENT_ARGUMENTS, args);
|
||||
|
||||
// Register SplirPairRule for SubSettings, set clearTop false to prevent unexpected back
|
||||
// navigation behavior.
|
||||
ActivityEmbeddingRulesController.registerSubSettingsPairRuleIfNeeded(this /* context */,
|
||||
false /* clearTop*/);
|
||||
|
||||
// Reroute request to SubSetting.
|
||||
intent.setClass(this /* context */, SubSettings.class)
|
||||
.addFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT);
|
||||
|
Reference in New Issue
Block a user