更改Android应用程序的语言

问题描述:

我试图添加按钮来更改应用程序中的语言,但 将语言更改为阿拉伯语后, 当我退出应用程序时,它将返回英语。更改Android应用程序的语言

public class Language extends AppCompatActivity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_language); 
    findViewById(R.id.BTN_ar).setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      setLocale("ar"); 
     } 
    }); 
    findViewById(R.id.BTN_en).setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      setLocale("en"); 
     } 
    }); 
} 

@SuppressWarnings("deprecation") 
public void setLocale(String lang) { 
    Locale myLocale = new Locale(lang); 

    DisplayMetrics dm = getResources().getDisplayMetrics(); 
    Configuration conf = getResources().getConfiguration(); 
    conf.locale = myLocale; 
    getResources().updateConfiguration(conf, dm); 
    Intent refresh = new Intent(this, MainActivity.class); 
    startActivity(refresh); 
    finish(); 


    } 
} 
+1

使用'SharedPreference' – Ibrahim

你必须保存更改语言SharedPreference,像下面的例子:

Resources res = getApplicationContext().getResources(); 
// Change locale settings in the app. 
DisplayMetrics dm = res.getDisplayMetrics(); 
android.content.res.Configuration conf = res.getConfiguration(); 
conf.locale = new Locale(language_code); 
res.updateConfiguration(conf, dm); 
//save to shared preference 
UtilFunctions.changeLanguage(HomeActivity.this, language_code); 


public static void changeLanguage(Context context, String languageCode) { 
     SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context); 
     SharedPreferences.Editor editor = preferences.edit(); 
     editor.putString("lang", languageCode); 
     editor.apply(); 
} 

public static String getCurrentLanguage(Context context) { 
    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); 
    return prefs.getString("lang", ""); 
} 

您应该将所选语言存储在SharedPreferences上,并在创建的活动上检查它。