を使用したアプリケーションがありますonConfigurationChanged(Configuration cfg)
。また、を設定しandroid:configChanges="orientation|keyboardHidden"
ます。したがって、onConfigChanged()
メソッドが呼び出され、両方の方向のレイアウトを持つディレクトリlayout-land
とlayout-port
ディレクトリがあるため、次のようなコードがあります。
@Override
public void onConfigurationChanged(Configuration cfg) {
super.onConfigurationChanged(cfg);
setContentView(R.layout.activity_main);
controller.applySettingsToButtons();
}
(activity_mainはポートレートバージョンと同じレイアウトですが、再度設定する必要があります。そうしないと、アプリケーションがポートレートバージョンをランドスケープモードにします。これは明らかに望ましくありません)
欲しいもの
ディスプレイを回転させたときに、アプリケーションをlayout-land
ファイルに切り替え、切り替えた後、ボタンなどにいくつかの(動的な)設定を適用したいと思います。
何が起こるのですか
新しいランドスケープコンテンツビューが設定されますが、applySettingsToButtons()
メソッドは実行されますが、ボタンの設定は適用されません。
考え
最初に、mabybeのsetContentviewが別のスレッドで実行され、applySettingsToButtons()
最初に終了すると思いました。しかし、両方を新しいスレッドに入れて実行すると、以前と同じことが起こります。
質問
別の(または同じ)コンテンツビューを設定した後、ボタンなどに設定を適用するにはどうすればよいですか?