3

SettingsActivityアプリに 2 つのシンプルなテーマを実装しました。 ( extending PreferenceActivity)内で選択できます。

この時点で、テーマを変更すると、新しく作成されたアクティビティにのみ適用されます。これは、設定を呼び出したアクティビティがアクティビティ スタック内の古いアクティビティであるためです。

私はたくさん検索しましたが、これは非常に便利であることがわかりました: how to restart an activity

ちなみに、このコードをどこに置くかは完全にはわかりません。onRestart()それを機能させる唯一の方法は、それをメソッドに入れることでした。

しかし、これはCPU、バッテリー、およびユーザーエクスペリエンスを大幅に浪費します.

何か助けはありますか?

4

2 に答える 2

1

onPreferenceChanged のリスナーを登録します。そこで、テーマの設定が変更されたものであるかどうかを確認できます. その後、次のコードを使用してアクティビティを再開できます。

Intent intent = getIntent();
finish();
startActivity(intent);

getIntent() でインテントを取得することにより、Activity がまったく同じ方法で開始されるようにします。

于 2012-07-30T13:43:53.587 に答える
1

PreferenceChangedListenerテーマ設定で aを設定します。起動された場合は、ユーザーをクリアしてアプリの最上位レベルに戻します。現在のアクティビティを再開することもできますが、いくつかのアクティビティが深い場合、これは少し面倒です。アプリを最初にリセットする方が簡単です。

        Intent i = new Intent(this, MainActivity.class);
        i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        this.finish();
        this.startActivity(i);
于 2012-07-30T13:45:59.017 に答える