2012-02-09 4 views
0

이 내 코드 (편집)입니다 :변경 글꼴 스타일을 동적으로

공용 클래스 주요 확장 활동
{

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에에서

, 여기에 그 텍스트 텍스트 뷰가 스타일을 변경해야합니다. 이제 응용 프로그램을 다시 시작하여 확인란의 기본 설정을 적용하는 문제는 필요하지 않습니다. 그러나 문제는 체크 박스 환경 설정을 선택 해제하면 기본 상태가되지 않는다는 것입니다. 그렇 습니까? 코드에서 무엇이 잘못 되었나요?

답변

1

을 나는 당신이 생각하는 글꼴을 변경하려면 환경 설정을 사용하고 있습니까?

상자를 선택하고 선택 여부에 따라 글꼴이 바뀔 것으로 예상합니까?

환경 설정을 변경 한 후 활동으로 돌아 가면 다시 스택에있는 활동이 이미 다시 표시되므로 onCreate() 메소드가 실행되지 않습니다.

글꼴 변경 코드는 onResume() 메서드에 넣거나 startActivityForResult 메서드를 사용하여 거기에서 환경 설정을 처리해야합니다.

업데이트 :

if (first) { 
    txt.setTypeface(Typeface.MONOSPACE); 
} else { 
    txt.setTypeface(Typeface.SERIF); 
} 
1

txt.requestLayout()을 호출 해보세요. 그러면보기가 다시 그려집니다.

+0

난 이미 코드에 포함되어 있습니다. – Tejaswini

+0

업데이트 된 응답보기 –

+0

시도했지만 txt.requestLayout하지만 여전히 동일한 출력. – Tejaswini

관련 문제