代码之家  ›  专栏  ›  技术社区  ›  Parth Anjaria

已签名apk中的区域设置未更改

  •  0
  • Parth Anjaria  · 技术社区  · 7 年前

    我有一个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扩展到我使用的所有活动。

    1 回复  |  直到 7 年前
        1
  •  1
  •   nimi0112    7 年前

     getApplicationContext().getResources().updateConfiguration(config,
                  getApplicationContext().getResources().getDisplayMetrics());
    

    而不是

     getBaseContext().getResources().updateConfiguration(config,
                getBaseContext().getResources().getDisplayMetrics());
    

    因为

    在应用程序中运行。

    getBaseContext()-如果要从其他上下文访问上下文

    推荐文章