我有一个android应用程序,包含4种语言,即英语、印地语、古吉拉蒂语和马拉地语。 我的res文件夹中有4个字符串文件,当我在调试模式下直接在设备上运行代码时,效果非常好。但是当我在apk上签名并将其发布到playstore上并尝试下载时,它就不起作用了。
这是我设置区域设置的代码:
public class BaseActivity extends AppCompatActivity { public SharedPreferences sharedpreferences; public static final String MyPREFERENCES = "MyPrefs"; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); sharedpreferences = getSharedPreferences(MyPREFERENCES, Context.MODE_PRIVATE); String lang = sharedpreferences.getString("lang","en"); System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! : "+lang); Locale locale = new Locale(lang); Locale.setDefault(locale); Configuration config = new Configuration(); config.locale = locale; getBaseContext().getResources().updateConfiguration(config, getBaseContext().getResources().getDisplayMetrics()); } }
我将此BaseActivity扩展到我使用的所有活动。
getApplicationContext().getResources().updateConfiguration(config, getApplicationContext().getResources().getDisplayMetrics());
而不是
getBaseContext().getResources().updateConfiguration(config, getBaseContext().getResources().getDisplayMetrics());
因为
在应用程序中运行。
getBaseContext()-如果要从其他上下文访问上下文