2017-03-21 1 views
1

프로젝트를 변경하고 프로젝트를 닫고 언어를 다시 열면 언어가 변경됩니다.안드로이드 스튜디오에서 언어가 변경되지 않았습니다.

이 문제를 확인하는 방법? onResume에서

public class MainActivity extends AppCompatActivity implements View.OnClickListener { 
private Locale myLocale; 
private Button btn_en, btn_ku,btn_ar; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    loadLocale(); 

    this.btn_en = (Button)findViewById(R.id.btn_en); 
    this.btn_ku = (Button)findViewById(R.id.btn_ku); 
    this.btn_ar = (Button)findViewById(R.id.btn_ar); 

    this.btn_en.setOnClickListener(this); 
    this.btn_ku.setOnClickListener(this); 
    this.btn_ar.setOnClickListener(this); 
} 


public void loadLocale() 
{ 
    String langPref = "Language"; 
    SharedPreferences prefs = getSharedPreferences("CommonPrefs", Activity.MODE_PRIVATE); 
    String language = prefs.getString(langPref, ""); 
    changeLang(language); 


} 


public void changeLang(String lang) 
{ 
    if (lang.equalsIgnoreCase("")) 
     return; 
    myLocale = new Locale(lang); 
    saveLocale(lang); 
    Locale.setDefault(myLocale); 
    android.content.res.Configuration config = new android.content.res.Configuration(); 
    config.locale = myLocale; 
    getBaseContext().getResources().updateConfiguration(config, getBaseContext().getResources().getDisplayMetrics()); 
    //updateTexts(); 


} 

public void saveLocale(String lang) 
{ 
    String langPref = "Language"; 
    SharedPreferences prefs = getSharedPreferences("CommonPrefs", Activity.MODE_PRIVATE); 
    SharedPreferences.Editor editor = prefs.edit(); 
    editor.putString(langPref, lang); 
    editor.commit(); 

} 


private void updateTexts() 
{ 
} 

public void onClick(View v) { 
    String lang = "en"; 
    switch (v.getId()) { 
     case R.id.btn_en: 
      lang = "en"; 
      finish(); 
      startActivity(getIntent()); 

      break; 
     case R.id.btn_ku: 
      lang = "fa"; 
      finish(); 
      startActivity(getIntent()); 

      break; 

     case R.id.btn_ar: 
      lang = "ar"; 
      finish(); 
      startActivity(getIntent()); 
      break; 

     default: 
      break; 
    } 
    changeLang(lang); 

}} 
+0

확실하지하지만 안드로이드 (추가 어쩌면 그 단순한 경우) onResume을 (전화, 그렇지 않으면에서 onCreate() 메소드 (이미 파괴되었다) 호출하는 것을 의미합니다 : configChanges = "locale")을 사용하여 언어 변경 - https://developer.android.com/guide/topics/resources/runtime-changes.html – Tasos

+0

:(이 코드는 테스트하지만 내 문제는 확인하지 않습니다. 내가 변경 내 APK에서 언어를 변경하지만 프로그램을 닫으면 지원 RTL 변경되지만 언어가 변경되지 않지만 내가 다른 활동에 갈 때로드 로컬 근무하지만 첫 번째 일은 도움이되지 않습니다 PLZ 도와주세요 : ( –

답변

0

전화 loadLocale 방법()가 작동합니다

이 내 코드입니다.

처음에 onCreate() 메서드가 호출 되었기 때문에 홈 화면으로 이동하거나 다른 활동을 시작하여 해당 활동을 일시 중지 한 경우 onPause() 메서드가 호출되었습니다. 당신이 다시 시작하면

앱은 다시는 단지

@Override 
public void onResume(){ 
super.onResume(); 
loadLocale(); 
} 
+0

:(같은 t 힌지 내가 방법을 사용하여 onResume() 어떻게 다른 솔루션 sasikumar –

관련 문제