1

彼ら。Android の PopupWindow に問題があります。
私は 2 つのボタンを持っています。どちらかをクリックすると、外側のクラスのメンバー変数である popupWindow が表示されます。
どちらの popupWindow のコンテンツとレイアウトも異なります。
次のように onClick メソッドで popipWindow のコンテンツを更新します。

    bt1.setOnClickListener(new OnClickListener{       
        onClick(View v){
            mPopupWin.setContentView(R.layout.layout_a);
    });

    bt2.setOnClickListener(new OnClickListener{       
        onClick(View v){
            mPopupWin.setContentView(R.layout.layout_b);
    });

最初にどちらかをクリックすると動作し、popupWindow が表示されますが、もう一方をクリックすると、popupWindow が期待どおりに表示されません (mPopupWin は以前に正しく閉じられており、contentView は NULL ではなく、幅/高さは0ではありません、私はチェックしました...)。
2 番目のボタンをもう一度クリックすると、popupWindow が正常に表示されます。次に、AsycnTask を使用して doInBackground で setContentView() を実行し、onPostExecute() で popupWindow を表示しようとすると、すべて正常に動作します。

この方法で目的を達成できますが、最初の方法の問題点を知りたいです。
あなたの助けを願って、ありがとう:)

4

1 に答える 1

1

テストする機会はありませんでしたが、使用するコードを変更してみてくださいupdate()

 bt1.setOnClickListener(new OnClickListener{       
    onClick(View v){
        mPopupWin.setContentView(R.layout.layout_a);
       mPopupWin.update();
});

bt2.setOnClickListener(new OnClickListener{       
    onClick(View v){
        mPopupWin.setContentView(R.layout.layout_b);
        mPopupWin.update();
});

ドキュメントによると

このメソッドは、ポップアップが表示されているときに呼び出されても効果がありません。

呼び出すかどうかを決定するときにisShowing()かどうかを確認する必要がある場合がありますupdate()

于 2013-07-08T19:00:56.567 に答える