>

활동에서 앱의 언어를 변경하기 위해 다음을 수행했습니다.

   private void changeLanguage(String stringLanguage){
        Locale locale = new Locale(stringLanguage);
        Locale.setDefault(locale);
        Configuration config = new Configuration();
        config.locale = locale;
        getBaseContext().getResources().updateConfiguration(config,getBaseContext().getResources().getDisplayMetrics());
        Intent refresh = new Intent(ActLanguage.this, ActLanguage.class);
        startActivity(refresh);
        finish();
    }

그러나 해당 활동 만 언어를 변경하면 프로젝트에 포함 된 다른 모든 활동은 원래 언어로 유지됩니다.

의견이나 의견은 환영합니다.


  • 답변 # 1

    앱 언어를 변경하는 몇 가지 해결 방법은 다음과 같습니다.

    사용자가 변경할 때 언어를 한 번 설정하십시오. 다음에 사용자가 앱을 시작할 때 자동으로 언어를 변경합니다.

    사용자가 선호하는 언어를 저장하고 다음에 앱을 열 때 설정할 수 있습니다.

    onConfigurationChanged() 에 전화하지 않았으므로 작동하지 않습니다 .

    이것은 응용 프로그램 클래스입니다. 메소드를 호출하여 언어를 변경할 수 있습니다.

    AppContext.getInstance().changeLanguage("en");
    Intent refresh = new Intent(ActLanguage.this, ActLanguage.class);
    finish();        
    startActivity(refresh);
    
    

    AppContext.java  수업

    import android.app.Application;
    import android.content.SharedPreferences;
    import android.content.res.Configuration;
    import java.util.Locale;
    
    public class AppContext extends Application {
        public static final String PREFERENCE = "NYPrefsFile";
        public static final String KEY_LANG = "LANG";
        private static AppContext mApp = null;
        @Override
        public void onCreate() {
            super.onCreate();
            mApp = this;
            setLanguage();
            sp = getSharedPreferences(PREFERENCE, 0);
        }
        public synchronized static AppContext getInstance() {
            return mApp;
        }
        public void setLanguage() {
            String lang = getStringData(KEY_LANG);
            changeLanguage(lang);
        }
        public String getCurrentLanguage() {
            if (config == null)
                config = getApplicationContext().getResources().getConfiguration();
            return config.locale.getLanguage();
        }
        Configuration config;
        public void changeLanguage(String lang) {
            if (config == null)
                config = getApplicationContext().getResources().getConfiguration();
            Locale locale = new Locale(lang);
            Locale.setDefault(locale);
            config.locale = locale;
            getApplicationContext().getResources().updateConfiguration(config, getApplicationContext().getResources().getDisplayMetrics());
            setStringData(KEY_LANG, lang);
            onConfigurationChanged(config);
        }
    
        @Override
        public void onConfigurationChanged(Configuration newConfig) {
            super.onConfigurationChanged(newConfig);
        }
        private SharedPreferences sp;
        public String getStringData(String pKey) {
            return sp.getString(pKey, "");
        }
        public void setStringData(String pKey, String pData) {
            SharedPreferences.Editor editor = sp.edit();
            editor.putString(pKey, pData);
            editor.apply();
        }
    }
    
    
    AndroidManifest.xml 에서

    <application
        android:name=".AppContext"
    
    

    업데이트 :

    모든 활동을 새로운 언어로로드하기 위해 백 스택을 지우면서 가정 활동을 시작합니다.

    Intent intent = new Intent(this, HomeActivity.class);
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK); 
    startActivity(intent);
    finish(); // call this to finish the current activity
    
    

  • 답변 # 2

    활동 컨텍스트가 아닌 애플리케이션 컨텍스트에서 수행하십시오. getApplicationContext ()를 사용하십시오.

    updateConfiguration이 더 이상 사용되지 않으므로 API 25의 createConfigurationContext도 사용하십시오.

  • 답변 # 3

    솔루션은 다음과 같습니다.

     Intent refresh = new Intent(ActIdioma.this, ActMAINACTIVITY.class);
            refresh.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP| Intent.FLAG_ACTIVITY_NEW_TASK);
            startActivity(refresh);
    finish();
    
    

    주요 활동을 부르면 다른 모든 사람들이 언어를 바꿉니다.

관련 자료

  • 이전 Flutter에서 대화식 알림을 만드는 방법
  • 다음 google chrome stable error - google-chrome-stable 오류 - ubuntu 1004에서 chrome을 설치할 수 없습니다