0

UI アクティビティにポップアップ ウィンドウを使用したいと考えています。実際、メイン アクティビティ ページにボタンがあり、クリックするとダイアログ ウィンドウのように開きます。

そのダイアログウィンドウには、クリックするたびに値を渡す必要がある他の2つのボタンが必要です**(ウィンドウが消えることなく)**、定義された時間クリックがない場合(タイムアウト)消えて、メイン アクティビティに戻る必要があります。

「インテント」を使用してこれを行うことができますが、タイムアウト後にこの自動的に消えるダイアログウィンドウで実装したいと思います。これどうやってするの。?この問題で私を助けてください。

前もって感謝します、

4

1 に答える 1

0

最初に、以下のようにHandlerから UI コントロールを更新するための 1 つのグローバル変数を宣言します。Thread

Handler mHandler = new Handler();

ここで作成Threadし、while ループを使用して、スレッドのスリープ メソッドを使用して定期的にタスクを実行します。定義された時間、つまり 10 秒間クリックがない場合に自動を閉じるために使用するよりもmenu_bt、表示/開く場所からビューのオブジェクトがあるとします。popup windowthreadpopup window

mpopupの対象はこちらPopupWindow

タイムアウト後にダイアログ ウィンドウを消すには、以下のコードを使用します (私は 10 秒使用しました)。

それがあなたを助けることを願っています。

menu_bt.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View arg0) {

                View popUpView = getLayoutInflater().inflate(
                        R.layout.menu_popup, null); // inflating popup layout
                mpopup = new PopupWindow(popUpView, 400,
                        LayoutParams.WRAP_CONTENT, true); // Creation of popup
                mpopup.setAnimationStyle(android.R.style.Animation_Dialog);
                mpopup.showAsDropDown(menu_bt, 50, -10);
                Button btnOk = (Button) popUpView.findViewById(R.id.home);

                btnOk.setOnClickListener(new OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        mpopup.dismiss(); // dismissing the popup with button click
                    }
                });
                new Thread(new Runnable() {
                    @Override
                    public void run() {
                        // TODO Auto-generated method stub
                        while (true) {
                            try {
                                Thread.sleep(10000);
                                mHandler.post(new Runnable() {

                                    @Override
                                    public void run() {
                                        // TODO Auto-generated method stub
                                        // automatic dismissing the popup after 10 seconds
                                        mpopup.dismiss();
                                    }
                                });
                            } catch (Exception e) {
                                // TODO: handle exception
                            }
                        }
                    }
                }).start();
            }
        });
于 2014-05-31T08:15:09.013 に答える