如何实现AlertDialog.Builder选中的项目点击事件?

co2*_*f2e 1 java android android-alertdialog android-event

我想实现AlertDialog.Builder所选项目点击事件.以下是我到目前为止所尝试的内容.我对Android很新,我不知道如何访问该事件.如何为列表中的每个项目实现click事件?

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;

public class MakeCallAlertDialog {

    public static AlertDialog.Builder getAlertDialog(String strArray[],
            String strTitle, Activity activity) {
        AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(activity);
        alertDialogBuilder.setTitle(strTitle);
        alertDialogBuilder.setItems(strArray, new DialogInterface.OnClickListener() {

            @Override
            public void onClick(DialogInterface dialogInterface, int arg) {
                // TODO Auto-generated method stub
            }
        });

        return alertDialogBuilder;
    }
}
Run Code Online (Sandbox Code Playgroud)

A--*_*--C 8

由于您OnClickListener为该方法指定了特定的int参数,因此该参数是列表中位置:

参数

对话框 收到单击的对话框.

被点击(例如BUTTON1)按钮项目的点击的位置

这意味着在您的方法中,您应该能够这样做:

public static AlertDialog.Builder getAlertDialog(final String strArray[],
        String strTitle, final Activity activity) {

    AlertDialog.Builder alertDialogBuilder =  
            new AlertDialog.Builder(activity);
    alertDialogBuilder.setTitle(strTitle);

    alertDialogBuilder.setItems(strArray,
            new DialogInterface.OnClickListener() {

        @Override
        public void onClick(DialogInterface dialog, int which) {
           Toast.makeText(activity, strArray [which], Toast.LENGTH_SHORT).show();

           //rest of your implementation
        }
    });
   return alertDialogBuilder;
}
Run Code Online (Sandbox Code Playgroud)


Akb*_*ali 5

在onClick()事件中使用switch语句为每个按钮写入click方法.

    @Override
        public void onClick(DialogInterface dialogInterface, int arg) {
            // TODO Auto-generated method stub
            switch (arg) {
               case 0:
                  //you code for button at 0 index click
                  break;
               case 1:
                  //you code for button at 1 index click
                  break;
               default:
                    break;
            }
        }
Run Code Online (Sandbox Code Playgroud)

这里,arg表示按下的按钮的索引.你也可以使用strArray [arg]访问该按钮