Динамическое изменение стиля шрифта
Это мой код (отредактированный):
общественный класс
{
TextView txt;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button b=(Button) findViewById(R.id.button1);
txt = (TextView) findViewById(R.id.textView1);
b.setOnClickListener(new Button.OnClickListener()
{
public void onClick(View v)
{
Intent intent= new Intent(Main.this,Preference.class);
startActivity(intent);
}
});
}
public void onResume()
{
super.onResume();
Toast.makeText(this, "onResume", Toast.LENGTH_LONG).show();
SharedPreferences myPreference=PreferenceManager.getDefaultSharedPreferences(this);
boolean first=myPreference.getBoolean("first", true);
if(first)
{
Typeface font=Typeface.MONOSPACE;
txt.setTypeface(font);
}
}
}
В main.xml, здесь есть текстовое представление, стиль текста которого необходимо изменить. Предыдущая проблема с перезапуском приложения, чтобы вступить в действие, флажок предпочтения теперь не нужен. Но проблема в том, что когда я снимаю галочку с предпочтения, он не переходит в состояние по умолчанию. Может ли кто-нибудь помочь мне, что не так в коде?
3 ответа
Я думаю, что вы используете настройки для изменения шрифта?
Вы устанавливаете флажок и ожидаете, что шрифт изменится в зависимости от того, установлен он или нет?
Когда вы возвращаетесь к своей активности после изменения предпочтения, это не приводит к запуску метода onCreate(), поскольку активность уже существует в вашем заднем стеке и просто отображается повторно.
Вы должны поместить код изменения шрифта в метод onResume() или использовать метод startActivityForResult и обработать закрытие настроек там.
Обновить:
if (first) {
txt.setTypeface(Typeface.MONOSPACE);
} else {
txt.setTypeface(Typeface.SERIF);
}