2

を使用したアプリケーションがありますonConfigurationChanged(Configuration cfg)。また、を設定しandroid:configChanges="orientation|keyboardHidden"ます。したがって、onConfigChanged()メソッドが呼び出され、両方の方向のレイアウトを持つディレクトリlayout-landlayout-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()最初に終了すると思いました。しかし、両方を新しいスレッドに入れて実行すると、以前と同じことが起こります。

質問

別の(または同じ)コンテンツビューを設定した後、ボタンなどに設定を適用するにはどうすればよいですか?

4

1 に答える 1

1

(setcontentview)を介してXMLを再度設定した後、ボタンconfigurationChangeを初期化します。findviewbyidそれはうまくいくはずです。

于 2012-09-24T10:13:42.780 に答える