0

現在、ダイアログの結果を返すメソッドがあります。私が使用しているコードは

 private int ShowDialog(String FileName)
 {
      AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);
      // set title
      alertDialogBuilder.setTitle("Play File");

            // set dialog message
            alertDialogBuilder
                .setMessage("Would you like .... file")
                .setCancelable(false)
                .setPositiveButton("Yes",new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog,int id) 
                    {
                        dialog.cancel();
                        return 1;
                    }
                  })
                .setNegativeButton("No",new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog,int id) {
                        dialog.cancel();
                        return 0;
                    }
                });

             AlertDialog alert11 = alertDialogBuilder.create();
             alert11.show();

 }

しかし、onClick メソッドは無効にする必要があるようです。とにかく、このメソッドに値を返させ、その代わりに ShowDialog メソッドにその値を返すようにする方法はありますか?

4

3 に答える 3

2

このようなことを試してください

private int ShowDialog(String FileName)
{
     AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);
     // set title
     alertDialogBuilder.setTitle("Play File");

           // set dialog message
           alertDialogBuilder
               .setMessage("Would you like .... file")
               .setCancelable(false)
               .setPositiveButton("Yes",new DialogInterface.OnClickListener() {
                   public void onClick(DialogInterface dialog,int id) 
                   {
                       returnVal = 1;  // Instead of directly returning - set it here
                       dialog.dismiss();

                   }
                 })
               .setNegativeButton("No",new DialogInterface.OnClickListener() {
                   public void onClick(DialogInterface dialog,int id) {
                       returnVal = 0;  // Instead of directly returning - set it here
                       dialog.dismiss();
                   }
               });

            AlertDialog alert11 = alertDialogBuilder.create();
            alert11.show();

     return returnVal; // return it here.
}

returnValアクティビティのメンバー変数を次に示します。

于 2013-02-20T05:27:46.853 に答える
0

できません。ダイアログは一種の非同期です。つまり、メソッドはそれを表示することしかできませんが、ダイアログの実際の値は、ユーザーがボタンを押すまでしかわかりません。これに合わせてコードを変更する必要があります。ボタンをクリックすると、コンテナ クラスの別のメソッドを呼び出すことができます。

于 2013-02-20T05:24:37.190 に答える
0

onClick()のボタンのメソッドは、AlertDialog別のスレッドでシステムによって呼び出されます。また、メソッドの戻り値の型が であることがわかるようにvoid、値をそのまま返すことはできません。

できることは、を使用Handlerしてクラスでメソッドを呼び出し、必要な値を渡すことです。

于 2013-02-20T05:25:40.857 に答える