求解困惑。。

来源:2-8 多选对话框

睡觉也在学编程

2017-11-20 22:20:25

private void showMultiChoiceItems() {
   final String str[]={"篮球","羽毛球","乒乓球","足球"};
   final boolean b[]={true,false,false,false};
   AlertDialog.Builder al=new AlertDialog.Builder(this).setTitle("请选择你喜欢的运动:");
   al.setMultiChoiceItems(str, b, new DialogInterface.OnMultiChoiceClickListener() {
       @Override
       public void onClick(DialogInterface dialog, int which, boolean isChecked) {
       }
   }).setNegativeButton("确定", new DialogInterface.OnClickListener() {
       @Override
       public void onClick(DialogInterface dialog, int which) {
           String msg="你选中了:";
           for (int i=0;i<=b.length;i++){
             if(b[i]){
                 msg+=str[i];
             }
               Toast.makeText(MainActivity.this,msg,Toast.LENGTH_SHORT).show();
           }
       }
   });
   al.show();
}//当点击了添加的按钮的时候不Toast反而推出了软件

写回答

2回答

凛冬phx

2017-11-22

像这种操作时直接退出程序的情况,你应该在as里查看一下logcat运行日志,找到里面红色的报错部分,他会很详细的告诉你出了什么错误/异常,代码里哪里导致了这些错误。这样就可以解决大多数问题了

比如你的代码,他就会指示你 for (int i=0;i<=b.length;i++){    这一句导致了数组下标越界的异常,如果我没记错的话是

IndexOutOfBoundsException - 下标越界异常

你把<=改成<就好了。

0

irista23

2017-11-21

i<=b.length应该是i<b.length,否则当i=b.length会造成b[i]数组下标越界,素组下标是从0开始的。

0

0 学习 · 1044 问题

查看课程

相似问题

回答 1

回答 2

回答 1