0

問題が発生するビューには、1つのボタンと1つのタブホストがあります。ボタンのonclickリスナーは、現在のタブのテキストを変更します。問題は、向き(ポートからランドまたはランドからポート)を変更すると、ボタンのonclicklistenerが呼び出されたりスキミングされたりして、現在のタブのテキストが変更されることです。なぜこれが起こっているのですか、そして解決策は何ですか?

myActivity extends Activity{
    onCreate(bundle){
        ..
        ..
        add(button1);
        button1.onClickListner(new OnClickListener(){
             ..
             someAlertDialog.show();             //line xxx

        });
    }

}

実際にはアラートダイアログは表示されませんが(表示されるはずはありません)、エラーログに@linexxxのリークがあると表示されます。ログ全体がまもなく登場します。

編集:現在エラーログを取得できませんが、向きを変更した後も何か奇妙なことが起こっています。

4

1 に答える 1

0

向きの変更時にデフォルトで発生するのは、現在のアクティビティインスタンスが破棄されてから再作成され、前のインスタンスの状態が渡されることです。これが発生したときにダイアログが画面に表示されている場合、それを表示しているウィンドウがリークします。

が呼び出されActivity#showDialogたときにダイアログを管理するを使用していないため、手動で行う必要があります。onDestroyしたがって、表示されている場合は、オーバーライドActivity#onDestroyして呼び出すDialog#dismiss必要があります。

于 2012-04-10T15:21:04.010 に答える