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

@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 に答える
0

以前のアクティビティに戻ると、イベントが発生するため、メソッドを内部からonRestart()呼び出してアクティビティを再作成できます。これにより、アプリの言語が変更されると思われます。onCreate()onRestart()

于 2012-08-29T04:40:06.867 に答える