2011-09-18 4 views
0

문제가 있습니다. 의도 탭이있는 TabActivity가 있습니다. 내 응용 프로그램 사용자는 기본 설정에서 언어를 변경할 수 있습니다.TabActivity는 언어를 변경하지 않습니다

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    switch (requestCode) { 
    case 1: 
     finish(); 
     startActivity(getIntent()); 
     break; 

    default: 
     break; 
    } 
} 

이 코드 실행 완벽하게 모든 텍스트가 변경된 언어이기 때문에 : 사용자 변경 언어와 응용 프로그램 내 TabActivity이 일에 돌아가 .

응용 프로그램을 다시 시작하면 문제가 발생합니다. 일부 텍스트의 언어가 올바르지 않습니다 (시스템 기본값). 환경 설정 화면을 다시 열고 TabActivity로 돌아 가면 텍스트가 모두 번역됩니다.

재시작 신청 후 모든 텍스트를 어떻게 번역 할 수 있습니까? 응용 프로그램을 처음 실행하면 모든 텍스트가 적절한 언어로 표시되지 않는 이유는 무엇입니까?

내 영어로 죄송합니다. 내 뜻을 이해하고 도와주세요. 고맙습니다.

String lang = preferences.getString("Language", ""); 
    Configuration config = new Configuration(); 
    if (!TextUtils.isEmpty(lang)) 
      config.locale = new Locale(lang); 
     else 
      config.locale = Locale.getDefault(); 
    Locale.setDefault(new Locale(lang)); 
    getBaseContext().getResources().updateConfiguration(config, null); 

tabActivity :

저장할 때이 PreferenceActivity를에서 코드

public class PlanActivity extends TabActivity { 

SharedPreferences preferences; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setTitle(R.string.app_name); 

    preferences = getSharedPreferences(Constans.PREF, Activity.MODE_PRIVATE); 
    edytor = preferences.edit(); 

    String lang = preferences.getString("Language", "en"); 
    Configuration config = new Configuration(); 
    if (!TextUtils.isEmpty(lang)) 
     config.locale = new Locale(lang); 
    else 
     config.locale = Locale.getDefault(); 

    Locale.setDefault(new Locale(lang)); 
    getBaseContext().getResources().updateConfiguration(config, null); 

    setContentView(R.layout.main); 
     TabHost tabHost = getTabHost(); 
......... more 

그리고이 코드가 제대로 작동하지 않습니다. 설정으로 가서 새로 고침 텍스트의 tabActivity로 돌아 가야합니다.

답변

0

SharedPreferences 개체의 변경 사항을 올바르게 저장하고 있습니까? 입력하신 코드에 SharedPreferences.Editor을 사용하여 변경 사항을 저장하는 것으로 표시되지 않습니다.

편집 : 환경 설정 활동에 저장하려는 환경 설정 파일이 탭 활동 (preferences = getSharedPreferences(Constans.PREF, Activity.MODE_PRIVATE);)에서 열고있는 활동과 동일한 지 확인하십시오. 탭 활동이 환경 설정 활동에 저장 한 환경 설정을 찾지 못하면 저장 코드가 호출되지 않거나 (확인을 위해 중단 점이나 로그 문을 사용) 또는 잘못된 파일에 저장 중입니다.

+0

예. 나는 올바르게 저장한다 : 'private void setPreferences() { \t \t SharedPreferences.Editor edytor = preferences.edit(); \t \t edytor.putString ("Language", listLanguage.getValue()); \t \t edytor.commit(); \t}'' @Override \t 보호 공극 onPause() { \t \t super.onPause(); \t \t setPreferences(); ' – Castik

+0

올바르게 저장하고 동일한 파일이라고 생각합니다. 나는 탭 라벨이 내가 원하는 것을 번역하기 때문에, 그러나 내용이 아니라고 생각한다. 환경 설정 화면으로 가서 TabActivity로 돌아 가면 모든 텍스트가 올바르게 표시됩니다. – Castik

관련 문제