从xml设置字符串时读取字符串目录不正确

时间:2017-09-05 05:59:05

标签: android

我更改了默认的本地语言,但是在更改配置到横向和纵向之后的android 7中以及在xml布局中设置的打开页面字符串后,从默认目录中读取字符串!

java android:text="@string/test"

这个字符串而不是显示 - > سلام;将显示 - >测试; 但是,如果我在java中以编程方式设置字符串,这将是有效的,文本是 - > سلام;

java test.setText(G.context.getResources().getString(R.string.test));

我也检查每个更改配置中的本地语言

```的java

public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
    G.handler.postDelayed(new Runnable() {
        @Override
        public void run() {
            checkLanguage();
        }
    }, 200);
}

public static void checkLanguage() {

    try {
        String selectedLanguage = G.selectedLanguage;
        if (selectedLanguage == null) return;
        Locale locale = new Locale(selectedLanguage);
        Locale.setDefault(locale);
        Configuration config = new Configuration();
        config.locale = locale;
        G.context.getResources().updateConfiguration(config, G.context.getResources().getDisplayMetrics());
        // }
    } catch (Exception e) {
        e.printStackTrace();
    }
}

```

2 个答案:

答案 0 :(得分:0)

当您将配置更改为横向时,您应该有另一个具有相同名称的布局,专为此设计并在其中放置相同的文本。

答案 1 :(得分:0)

  

惊人的解决方案

在我从全局上下文

中使用的以下代码行中
 G.context.getResources().updateConfiguration(config, G.context.getResources().getDisplayMetrics());

之后将旋转更改为横向并再次更改为纵向,xml布局中使用的 @ string / test 无法正常工作且'test'显示,而非显示波斯语单词'سلام'

但现在

我刚刚删除了应用

中填写的全局背景
 getResources().updateConfiguration(config, getResources().getDisplayMetrics());

最后,这个问题解决了:)