markdowneide 2013-03-25 05:53 采纳率: 0%
浏览 5176
已采纳

Android 中带复选框的对话框

下面是关于带有复选框的对话框事例:

final int DIALOG_ITEMS = 1;
    String data[] = { "one", "two", "three", "four" };
    @Override
        protected void onCreate(Bundle savedInstanceState) 
        {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            Button but1=(Button) findViewById(R.id.button1);
            but1.setOnClickListener(new OnClickListener() 
            {
                @Override
                public void onClick(View arg0) 
                {
                     showDialog(DIALOG_ITEMS);
                }
            }); 
        }
        protected Dialog onCreateDialog(int id) {
            AlertDialog.Builder adb = new AlertDialog.Builder(this);

              adb.setTitle(R.string.items);
              adb.setSingleChoiceItems(data, -1, myClickListener);
          }
           OnClickListener myClickListener = new OnClickListener() {
            public void onClick(DialogInterface dialog, int which) {
              ListView lv = ((AlertDialog) dialog).getListView();
              if (which == Dialog.BUTTON_POSITIVE)
                Log.d(LOG_TAG, "pos = " + lv.getCheckedItemPosition());
              else
                Log.d(LOG_TAG, "which = " + which);
            }
          };

Eclipse 提示的两个错误:

1) setSingleChoiceItems(int, int, DialogInterface.OnClickListener) in the type AlertDialog.Builder is not applicable for the arguments (String[], int, View.OnClickListener) MainActivity.java /master/src/com/example/hotdog_master line 98 Java Problem

2) View.OnClickListener(){} must implement the inherited abstract method View.OnClickListener.onClick(View) MainActivity.java /master/src/com/example/hotdog_master line 104 Java Problem

请问是哪里出错了呢?

  • 写回答

2条回答

  • nana4ever 2013-03-26 02:47
    关注

    如下修改 OnClickListener 方法:

    DialogInterface.OnClickListener myClickListener = new 
                                       DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int which) {
                  ListView lv = ((AlertDialog) dialog).getListView();
                  if (which == Dialog.BUTTON_POSITIVE)
                    Log.d(LOG_TAG, "pos = " + lv.getCheckedItemPosition());
                  else
                    Log.d(LOG_TAG, "which = " + which);
                }
              };
    

    创建 AlertDialog.Builder 实例:

    AlertDialog.Builder adb = new AlertDialog.Builder(Your_Current_Activity.this);
    

    修改 onCreateDialog 方法:

    protected Dialog onCreateDialog(int id) {
          AlertDialog.Builder adb = new AlertDialog.Builder(MainActivity.this);
          adb.setTitle(R.string.items);
          adb.setSingleChoiceItems(data, -1, myClickListener);
          AlertDialog dialog = builder.create();
          dialog.show();
          return super.onCreateDialog(id);  //<<<< add return here
      }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 基于卷积神经网络的声纹识别
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 stm32开发clion时遇到的编译问题