0

これは私のコードです(編集済み):

public class 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 があります。チェック ボックスの設定を有効にするためにアプリケーションを再起動するという以前の問題は、現在は必要ありません。しかし、問題は、チェックボックスの設定をオフにすると、デフォルトの状態にならないことです.Yそうですか?コードの何が問題なのか助けてもらえますか?

4

2 に答える 2

1

txt.requestLayout() を呼び出してみてください。これにより、ビューが再描画されます。

于 2012-02-09T06:58:15.403 に答える
1

設定を使用してフォントを変更していると思いますか?

ボックスにチェックを入れて、それがチェックされているかどうかに基づいてフォントが変わることを期待していますか?

設定を変更した後にアクティビティに戻ると、アクティビティがバックスタックに既に存在し、単に再表示されているため、onCreate() メソッドは実行されません。

フォント変更コードを onResume() メソッドに入れるか、startActivityForResult メソッドを使用してそこで設定を閉じる必要があります。

アップデート:

if (first) {
     txt.setTypeface(Typeface.MONOSPACE);
} else {
     txt.setTypeface(Typeface.SERIF);
}
于 2012-02-09T07:37:33.810 に答える