使用不同的资源文件启动Android应用程序

时间:2012-02-06 13:20:50

标签: java android eclipse

我有一个可以推出2个版本的应用程序。

2应用程序之间的主要区别是资源文件。 (某些部分已重命名,但应用程序只处理一种语言)

是否可以在2个strings.xml文件与@ string / hello或R.string.hello之间切换到android中的某些特定设置?如果没有,那么解决这个问题的最佳方法是什么?我想我可以使用一些eclipse功能来切换xml文件,如果有一些参数...我更喜欢只有apk包,但它不是强制性的。

我无法更改客户端上的语言......

此致

修改

好主意Aleks。我将projet重构为库并使用良好的语言环境参数启动它。在这种情况下,我可以使用良好的数据库进行3个不同的项目。

1 个答案:

答案 0 :(得分:1)

如果我理解正确,您希望能够在不更改手机语言的情况下切换应用程序的语言。我想,我可以看到一个有用的场景。

你可以尝试这样做。

1)使用多个字符串资源构建您的应用程序,就像您支持多种语言环境/语言一样。

2)在您的清单中,将configChanges="locale"添加到您的活动中:

<activity android:name=".Main" android:configChanges="locale" android:label="@string/app_name" />

3)应用程序第一次启动时,它将使用客户端电话的语言。当用户更改应用程序中的语言时,以您喜欢的任何方式保存新语言(sqlite,文件,应用程序包等)并强制重新启动应用程序。

4)当您的应用程序启动时,检索已保存的语言并将默认语言环境设置为:

    @Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
        //load saved language
        String languageToUse  = ...
        if(languageToUse != null)
        {
            Locale locale = new Locale(languageToLoad); 
            Locale.setDefault(locale);
            Configuration config = new Configuration();
            config.locale = locale;
            getBaseContext().getResources().updateConfiguration(config, getBaseContext().getResources().getDisplayMetrics());
        }
        this.setContentView(R.layout.main);
    }

我自己没试过,所以这只是一个大概 - 看看它是否适合你。