2012-02-06 130 views
0

我有一个应用程序可以在2个版本中启动。使用不同的资源文件启动android应用程序

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

是否可以在android string中使用@ string/hello或R.string.hello在2个strings.xml文件之间进行切换?如果不是的话,那么这个问题最好的办法是什么?我想如果有一些参数,我可以使用一些eclipse功能来切换xml文件...我更喜欢只有apk包,但它不是强制性的。

我不能更改客户端上的语言......

问候

编辑

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

回答

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); 
    } 

我还没有尝试过这个自己,所以这只是一个一般的想法 - 看看它是否工作为你。