0

アプリケーションの言語を選択するために使用されるスプラッシュ画面を表示する効率的な方法はありますか? 現在 SetLocale メソッドを使用していますが、アプリケーション全体を再起動する必要があります。実行時に言語を変更する方法はありますか?

どうも

4

1 に答える 1

1

アプリを再起動することはできませんが、スプラッシュ画面で言語を選択した後、以下のメソッドを呼び出して、アクティビティを「リロード」するだけです (または、あなたの場合は、ロケールを設定した後に新しいアクティビティを入力します)。

public static void reload(Activity activity) {
    Intent intent = activity.getIntent();
    intent.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
    activity.finish();
    activity.overridePendingTransition(0, 0);
    activity.startActivity(intent);
    activity.overridePendingTransition(0, 0);
}

overridePendingTransition(0, 0)「リサイクル」アクティビティの終了と開始の両方のアニメーションをカットしたい場合は、どちらも必要であることがわかったため、2 つが存在します。また、ICS と JB では動作が異なっていたので、余剰分も残しておきsetFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION)ました。

(上記の方法を使用して、ダークホロとライトホロのテーマスイッチを「オンザフライ」で適用します)。

編集:

とにかく、ロケールを変更するには、次のようなものを使用します。

locale = new Locale(param0, param1);
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;

含む

android:configChanges="locale|orientation|screenSize|keyboard|keyboardHidden"

このメソッドを使用するアクティビティの下のマニフェストに。

必要に応じてonCreate(...)、アプリのすべてのメソッドでロケールを初期化するために使用する完全なメソッドのソースを投稿 (またはリンク) できます。ロケールをプリファレンスに保存されているロケールに強制するために使用されます (デフォルトのロケールにフォールバックします)。

于 2013-07-05T16:53:43.997 に答える