[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.widget.TextView;
import androidx.annotation.Nullable;
import androidx.preference.Preference;
import com.android.internal.app.LocaleHelper;
@@ -62,6 +63,7 @@ public class AppLocaleDetails extends SettingsPreferenceFragment {
private LayoutPreference mPrefOfDescription;
private Preference mPrefOfDisclaimer;
private ApplicationInfo mApplicationInfo;
@Nullable private String mParentLocale;
/**
* Create a instance of AppLocaleDetails.
@@ -111,6 +113,12 @@ public class AppLocaleDetails extends SettingsPreferenceFragment {
public void onResume() {
super.onResume();
refreshUi();
final Activity activity = getActivity();
if (mParentLocale != null) {
activity.setTitle(mParentLocale);
} else {
activity.setTitle(R.string.app_locale_picker_title);
}
}
private void refreshUi() {
@@ -215,4 +223,8 @@ public class AppLocaleDetails extends SettingsPreferenceFragment {
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.ListView;
import androidx.annotation.Nullable;
import androidx.core.app.NotificationCompat;
import androidx.core.view.ViewCompat;
@@ -67,6 +68,7 @@ public class AppLocalePickerActivity extends SettingsBaseActivity
private View mAppLocaleDetailContainer;
private NotificationController mNotificationController;
private MetricsFeatureProvider mMetricsFeatureProvider;
@Nullable private String mParentLocale;
@Override
public void onCreate(Bundle savedInstanceState) {
@@ -129,6 +131,11 @@ public class AppLocalePickerActivity extends SettingsBaseActivity
finish();
}
@Override
public void onParentLocaleSelected(LocaleStore.LocaleInfo localeInfo) {
mParentLocale = localeInfo.getFullNameNative();
}
@Override
public boolean onMenuItemActionCollapse(MenuItem item) {
mAppBarLayout.setExpanded(false /*expanded*/, false /*animate*/);
@@ -258,6 +265,12 @@ public class AppLocalePickerActivity extends SettingsBaseActivity
super.onFragmentViewCreated(fm, f, v, s);
ListView listView = (ListView) v.findViewById(android.R.id.list);
if (listView != null) {
if (mParentLocale != null) {
mAppLocaleDetails = AppLocaleDetails.newInstance(mPackageName,
getUserId());
mAppLocaleDetailContainer = launchAppLocaleDetailsPage();
mAppLocaleDetails.setParentLocale(mParentLocale);
}
listView.addHeaderView(mAppLocaleDetailContainer);
}
}