1

検索しましたが、問題の解決策が見つかりません。私がする必要があるのは、ランダムなテーマを設定してから、他のすべてのビューにこのテーマを採用させることです。テーマのランダム化は問題ではありません。うまくいっていることはわかっています。問題は、既にスタックにあるビューを更新することです。

電話する

int theme = Constants.THEMES[randomInt];
setTheme(theme);

スタック内のどこかのアクティビティで、そのアクティビティを呼び出しますinvalidate()。そのアクティビティでは何も起こりませんが、他のアクティビティに行くと新しいテーマが適用されます。

また、自分に「戻る」と、再描画mainActivityする方法がわかりません。View

私は電話しています

@Override
protected void onResume() {
    super.onResume();
    if(refreshNeeded){
        getWindow().getDecorView().findViewById(
        android.R.id.content).getRootView().invalidate();
    }
}

しかし、再び何もありません。新しいテーマで再描画する方法がわかりません。

明らかな何かが欠けていますか?

4

2 に答える 2

0

でこれを呼び出しますButton click

    getApplication().setTheme(R.style.Theme_Black);
    setTheme(R.style.Theme_Black);
    Intent n = new Intent(activityA.this , activityB.class);
    startactivity(n);

それが動作します。themes.xmlただし、valuesフォルダー内にすべてのウィジェットスタイルが必要です

于 2012-07-20T12:07:06.330 に答える
0

setTheme(R.style.Theme)と の前にsuper.onCreate呼び出しますsetContentView

于 2014-12-07T23:33:47.960 に答える