Динамическое изменение стиля шрифта

Это мой код (отредактированный):

общественный класс
{

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);
}

Попробуйте вызвать txt.requestLayout(). Это перекрасит вид.

Другие вопросы по тегам