求解困惑。。
来源: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 - 下标越界异常
你把<=改成<就好了。
irista23
2017-11-21
i<=b.length应该是i<b.length,否则当i=b.length会造成b[i]数组下标越界,素组下标是从0开始的。
相似问题