1

以下のアラート ダイアログでは、ダイアログ ウィンドウを閉じるために 2 回クリックしたボタンを 2 回クリックする必要があり、何時間もグーグル検索しても答えが見つかりません。私はそれが私の顔を見つめていると確信していますが、私はそれを見ることができません.

編集: さらに検索すると、ダイアログが実際に 2 回開かれ、ここで発生していると思われます: asset_id_text_view.setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) {

            showAssetIDDialog();
            return true;
        }

    });

編集: dialog.dismiss(); から始めました。そして、いくつかのグーグルは、dialog.cancel(); を試すことを提案しました。どちらも私にとっては成功しませんでした。

public void showAssetIDDialog() {
    // TODO Auto-generated method stub
    AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
            CreateTicketActivity.this);

    // set title
    alertDialogBuilder.setTitle("Enter Asset ID");

    alertDialogBuilder.setCancelable(true).setMessage(
            "How would you like to proceed?");
    alertDialogBuilder.setPositiveButton("Enter text",
            new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int id) {
                    //enterTextDialog();
                    dialog.cancel();        

                }
            });
    alertDialogBuilder.setNegativeButton("Cancel",
            new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int id) {
                    dialog.cancel();
                }
            });

    // create alert dialog
    AlertDialog alertDialog = alertDialogBuilder.create();

    // show it
    alertDialog.show();
}
4

4 に答える 4

1

したがって、問題は実際に OnTouchListener にあったようです

コードは、motionEvent が発生するたびに AlertDialog を開くという、私が要求したことを実行していました。つまり、すべてのタッチで少なくとも 2 回になります。

switch ステートメントを含めることで、次のように、画面が押されたときにのみ alertDialog を開くようにトリガーでき、画面が離されたときにもトリガーできませんでした。

    asset_id_text_view.setOnTouchListener(new OnTouchListener() {
    @Override
    public boolean onTouch(View v, MotionEvent event) {
        switch (event.getAction()){
            case MotionEvent.ACTION_DOWN:
                showAssetIDDialog();
                break; 
            default: 
                break;
    }
    });
于 2013-08-30T13:37:12.197 に答える