1
У меня есть PreferenceActivity, где пользователь может выбрать размер для TextView приложения Widget. Действие вызывается при нажатии виджета. Я устанавливаю размер текста в OnPause, но он не работает. Что-то не так с кодом?Изменить размер шрифта приложения Виджет
public class WidgetSettings extends PreferenceActivity
{
private int mAppWidgetId = 0;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.layout.widget_setttings_layout);
Intent intent = getIntent();
Bundle extras = intent.getExtras();
if (extras != null) {
mAppWidgetId = extras.getInt(AppWidgetManager.EXTRA_APPWIDGET_ID,
AppWidgetManager.INVALID_APPWIDGET_ID);
}
}
@Override
protected void onPause()
{
super.onPause();
float textSize = Float.parseFloat(PreferenceManager.getDefaultSharedPreferences(this).getString("batteryTextSize", "12"));
AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(getBaseContext());
RemoteViews remoteView = new RemoteViews(getBaseContext().getPackageName(), R.layout.widget_layout);
remoteView.setFloat(R.id.textView1, "setTextSize", 22);
appWidgetManager.updateAppWidget(mAppWidgetId, remoteView);
}
}
Почему вы устанавливаете размер текста в onPause()? onPause() запускается, что удивительно, когда приложение приостанавливается, поэтому вашему пользователю придется подождать, пока устройство не выйдет из строя и не заснет, или вы не перенесете какую-либо другую деятельность на передний план. Попробуйте свой код в onResume(), который запускается сразу после onCreate() или когда действие возвращается на передний план. Если вы хотите получить настоящую фантазию, поместите корректировку размера текста в метод buildUI(), который можно назвать программным, как только пользователь изменит pref. Вы также можете использовать его в своих onResume() или onCreate(). – MarsAtomic
Поскольку это настройка конфигурации, когда пользователь выбирает размер текста для виджета рабочего стола, а после того, как он выбирает размер и закрывает действие, виджет должен обновляться. – domen
Я это понимаю, но я должен повторить: почему вы устанавливаете размер текста в onPause()? Вы пробовали переместить код в onResume()? Подумайте об этом ... пользователь запускает виджет -> пользователь нажимает prefs -> widget.onPause() -> запуск запусков prefs -> пользователь изменяет prefs -> пользователь возвращается в виджет -> widget.onResume() работает. Что мне не хватает? – MarsAtomic