динамическое изменение стиля шрифта - PullRequest
0 голосов
/ 09 февраля 2012

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

открытый класс Main extends Activity
{

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, здесь естьtextview, стиль текста которого необходимо изменить. Предыдущая проблема с перезапуском приложения для вступления в силу установки флажка теперь не нужна.Но проблема в том, что когда я снимаю галочку с предпочтения, он не переходит в состояние по умолчанию.Может ли кто-нибудь помочь мне, что не так в коде?

Ответы [ 3 ]

1 голос
/ 09 февраля 2012
1 голос
/ 09 февраля 2012

Я думаю, что вы используете настройки для изменения шрифта?

Вы устанавливаете флажок и ожидаете, что шрифт изменится в зависимости от того, установлен он или нет?

Когда вы вернетесь к своемудействие после изменения предпочтения, это не приводит к запуску метода onCreate (), поскольку действие уже существует в вашем заднем стеке и просто отображается повторно.

Вы должны поместить код изменения шрифта в onResume () или используйте метод startActivityForResult и обработайте закрытие настроек там.

Обновление:

if (first) {
     txt.setTypeface(Typeface.MONOSPACE);
} else {
     txt.setTypeface(Typeface.SERIF);
}
1 голос
/ 09 февраля 2012

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

...