質問に厳密に答えるには、invalidate()を使用します。
public void invalidate()以降:APIレベル1
ビュー全体を無効にします。ビューが表示されている場合、onDraw(Canvas)は将来のある時点で呼び出されます。これは、UIスレッドから呼び出す必要があります。非UIスレッドから呼び出すには、postInvalidate()を呼び出します。
ViewGroup vg = findViewById (R.id.mainLayout);
vg.invalidate();
これで、アクティビティが再開すると、すべてのビューが自分自身を描画するようになります。invalidate()を呼び出す必要はありません。テーマを適用するには、ビューが描画される前、つまり、setContentView(R.layout.mainscreen);
public void setTheme(int resid)以降:APIレベル1
このコンテキストの基本テーマを設定します。これは、ビューがコンテキストでインスタンス化される前に(たとえば、setContentView(View)またはinflate(int、ViewGroup)を呼び出す前に)呼び出す必要があることに注意してください。
APIドキュメントリファレンスはこちら:http : //developer.android.com/reference/android/view/ContextThemeWrapper.html#setTheme%28int%29
onDraw()メソッドはすでにインスタンス化されたビューで機能するため、setThemeは機能しません。私自身はテーマについての経験はありませんが、考えられる2つの代替オプションは次のとおりです。
- 代わりにonCreate()でsetThemeを呼び出します。
- redo setContentView(R.layout.mainscreen); すべてのレイアウトを強制的に再インスタンス化します。