0

我已允许用户更改语言。语言更改是根据自己的活动进行的。当用户按下后退按钮时,我希望所有文本都切换到所选语言。

我正在使用类似以下的东西..

@Override
public void onResume() {
    if (language.equals("en"))
        txTitle.setText("TITLE");
    else
        txTitle.setText("TITEL");

    super.onResume();
}

按下后不会刷新页面。

4

4 回答 4

1

覆盖 onBackPressed:

@Override
public void onBackPressed() {
  if (language.equals("en"))
      txTitle.setText("TITLE");
   else
     txTitle.setText("TITEL");      
}

但这不是一个好方法,因为您将无法进入上一个活动。为什么不将语言保存在 SharedPreferences 中并将其加载到 onCreate() 中。

于 2012-08-29T04:40:58.293 回答
0

当您返回之前的活动时,onRestart()将触发事件,因此您可以onCreate()从内部调用方法onRestart()来重新创建您的活动,我相信这会改变您的应用程序的语言。

于 2012-08-29T04:40:06.867 回答
0

@Muz 当你按下后退按钮时,它不会调用onCreate()函数。因此,您应该在onResume().

于 2012-08-29T04:54:33.657 回答
0

在您的主要活动中,您可以调用:

Intent selectLanguage = new Intent("your_activity.this", 
                                   Your_secund_Activity.class);

startActivityForResult(selectLanguage, languageRequestCode);

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode==languageRequestCode) {
        //Your selected language number will be resultCode    
        //refresh methods
    }
}

//in the secund activity:

@Owerride
public void onBackPressed() {
    super.onBackPressed();
    setResult(selectedLanguageNumber);
}

@Owerride
public void onPause() {
    super.onPause();
    setResult(selectedLanguageNumber);
}

@Owerride
public void onDestroy() {
    super.onDestroy();
    setResult(selectedLanguageNumber);
}
于 2012-08-29T07:01:12.430 回答