0

これは私のショーダイアログコードです。

    @Override
    protected Dialog onCreateDialog(int id) {
    switch (id) {
    case 0:
        return new AlertDialog.Builder(this)
        .setIcon(R.drawable.ic_launcher)
        .setTitle("Select Reminder which you want to delete")
        .setPositiveButton("OK",
        new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int whichButton)
            {
                Toast.makeText(getBaseContext(), "OK clicked!", Toast.LENGTH_SHORT).show();
                check  = 1;
            }
        }
        )

        .setNegativeButton("Cancel",
        new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int whichButton)
            {
                Toast.makeText(getBaseContext(), "Cancel clicked!", Toast.LENGTH_SHORT).show();
                check = 2;
            }
        }
        )

        .setMultiChoiceItems(items, itemsChecked,
        new DialogInterface.OnMultiChoiceClickListener() {
            public void onClick(DialogInterface dialog,
                    int which, boolean isChecked) {

                Toast.makeText(getBaseContext(), items[which] + (isChecked ? " checked!":" unchecked!") + which, Toast.LENGTH_SHORT).show();
            }
        }
        ).create();
    }
        return null;
    }

これは私が呼び出す関数です。

   public void show()
    {

        showDialog(0);

        if(check == 1)
        {
            Toast.makeText(this, "ok" + check, Toast.LENGTH_LONG).show();
        }
        else if (check == 2)
        {
            Toast.makeText(this, "Cancel" + check, Toast.LENGTH_LONG).show();
        }
    }

私は、「showDialog(0);」ということが起こっていることから混乱しているビットの問題に直面しています。関数はうまく機能しますが、「OK」ボタンを押すとダイアログが消え、「OK」ボタンのonclicklistenerに書かれたトーストだけが表示されますが、「showDialog(0);」の後に書かれたコード 別のトーストを表示するには、到達不能のようなものです。変数「check」(グローバル) を意味します。その値は、「ok」および「cancel」ボタンの onclicklisteners に 1 または 2 を設定し、「showDialog(0」の後に if-else 条件で使用します。 );" 別のトーストを表示しますが、関数「show」は if-else 条件をチェックせずに終了します。ここで実際に何が起こっているのか理解できませんでしたか?

4

1 に答える 1

0

いつ

showDialog(0)と呼ばれます。その後、このコードが実行されます(ボタンを押す前にOK)

if(check == 1)
    {
        Toast.makeText(this, "ok" + check, Toast.LENGTH_LONG).show();
    }
    else if (check == 2)
    {
        Toast.makeText(this, "Cancel" + check, Toast.LENGTH_LONG).show();
    }

それから私は推測するcheck=0ので、Toast表示されていません。

アップデート

ユーザーのプレスに対して何らかのアクションを実行したい場合OKは、ここで行う必要があります

new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int whichButton)
            {
                Toast.makeText(getBaseContext(), "OK clicked!", Toast.LENGTH_SHORT).show();
                check  = 1;
                //here do your work
            }
        }
于 2012-11-27T18:55:23.447 に答える