[Settings] Should create header again when adding it to the listview

Bug: 291545021
Test: manual
Flag: EXEMPT bugfix
Change-Id: I9d76814d98b67b1eb0078765a2b5bd6949cff446
This commit is contained in:
Zoey Chen
2024-08-13 05:36:57 +00:00
parent 544cf32491
commit 291e496075
2 changed files with 25 additions and 0 deletions

View File

@@ -33,6 +33,7 @@ import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.widget.TextView; import android.widget.TextView;
import androidx.annotation.Nullable;
import androidx.preference.Preference; import androidx.preference.Preference;
import com.android.internal.app.LocaleHelper; import com.android.internal.app.LocaleHelper;
@@ -62,6 +63,7 @@ public class AppLocaleDetails extends SettingsPreferenceFragment {
private LayoutPreference mPrefOfDescription; private LayoutPreference mPrefOfDescription;
private Preference mPrefOfDisclaimer; private Preference mPrefOfDisclaimer;
private ApplicationInfo mApplicationInfo; private ApplicationInfo mApplicationInfo;
@Nullable private String mParentLocale;
/** /**
* Create a instance of AppLocaleDetails. * Create a instance of AppLocaleDetails.
@@ -111,6 +113,12 @@ public class AppLocaleDetails extends SettingsPreferenceFragment {
public void onResume() { public void onResume() {
super.onResume(); super.onResume();
refreshUi(); refreshUi();
final Activity activity = getActivity();
if (mParentLocale != null) {
activity.setTitle(mParentLocale);
} else {
activity.setTitle(R.string.app_locale_picker_title);
}
} }
private void refreshUi() { private void refreshUi() {
@@ -215,4 +223,8 @@ public class AppLocaleDetails extends SettingsPreferenceFragment {
return LocaleHelper.getDisplayName(appLocale.stripExtensions(), appLocale, true); return LocaleHelper.getDisplayName(appLocale.stripExtensions(), appLocale, true);
} }
} }
public void setParentLocale(@Nullable String localeName) {
mParentLocale = localeName;
}
} }

View File

@@ -37,6 +37,7 @@ import android.view.View;
import android.widget.FrameLayout; import android.widget.FrameLayout;
import android.widget.ListView; import android.widget.ListView;
import androidx.annotation.Nullable;
import androidx.core.app.NotificationCompat; import androidx.core.app.NotificationCompat;
import androidx.core.view.ViewCompat; import androidx.core.view.ViewCompat;
@@ -67,6 +68,7 @@ public class AppLocalePickerActivity extends SettingsBaseActivity
private View mAppLocaleDetailContainer; private View mAppLocaleDetailContainer;
private NotificationController mNotificationController; private NotificationController mNotificationController;
private MetricsFeatureProvider mMetricsFeatureProvider; private MetricsFeatureProvider mMetricsFeatureProvider;
@Nullable private String mParentLocale;
@Override @Override
public void onCreate(Bundle savedInstanceState) { public void onCreate(Bundle savedInstanceState) {
@@ -129,6 +131,11 @@ public class AppLocalePickerActivity extends SettingsBaseActivity
finish(); finish();
} }
@Override
public void onParentLocaleSelected(LocaleStore.LocaleInfo localeInfo) {
mParentLocale = localeInfo.getFullNameNative();
}
@Override @Override
public boolean onMenuItemActionCollapse(MenuItem item) { public boolean onMenuItemActionCollapse(MenuItem item) {
mAppBarLayout.setExpanded(false /*expanded*/, false /*animate*/); mAppBarLayout.setExpanded(false /*expanded*/, false /*animate*/);
@@ -258,6 +265,12 @@ public class AppLocalePickerActivity extends SettingsBaseActivity
super.onFragmentViewCreated(fm, f, v, s); super.onFragmentViewCreated(fm, f, v, s);
ListView listView = (ListView) v.findViewById(android.R.id.list); ListView listView = (ListView) v.findViewById(android.R.id.list);
if (listView != null) { if (listView != null) {
if (mParentLocale != null) {
mAppLocaleDetails = AppLocaleDetails.newInstance(mPackageName,
getUserId());
mAppLocaleDetailContainer = launchAppLocaleDetailsPage();
mAppLocaleDetails.setParentLocale(mParentLocale);
}
listView.addHeaderView(mAppLocaleDetailContainer); listView.addHeaderView(mAppLocaleDetailContainer);
} }
} }