【问题标题】:AlertDialog multiplechoice and other dialogsAlertDialog 多项选择和其他对话框
【发布时间】:2019-08-07 11:34:49
【问题描述】:

我正在尝试使用多项选择进行警报对话框,它编译时没有错误,但是当我单击按钮时停止程序。所有其余的按钮都可以工作,我正在使用两个具有按钮的相同布局的类。完整的包在这个 onedrive
https://1drv.ms/u/s!Asr3Ewn45KOLtHUK0teCx0SENyMf?e=EPTpoR 或这个: https://1drv.ms/u/s!Asr3Ewn45KOLtGOqDkoMq20A-hbc?e=l1J2Nk (这是期货更新的文件夹。) 包 com.sistemariego; 进口 android.app.Activity;
导入 android.app.DatePickerDialog;
导入 android.app.Dialog;
导入 android.content.Intent;
导入 android.os.Bundle;
导入 android.view.View;
导入 android.content.Context;
导入 android.view.View.OnClickListener;
导入 android.widget.ArrayAdapter;

import android.widget.ListView;  
import android.widget.TextView;  
import java.lang.StringBuilder;  
import android.widget.Toast;  
 import android.widget.Button;  
import com.sistemariego.R; 
import java.util.Calendar; 
import android.app.Activity;  
import android.app.AlertDialog;  
import android.content.Context;  
import android.content.DialogInterface;  
public class SoleTiempo2 extends Activity{  

private Context context = this;  
public static int diasselected=0;      
public static int setdias=0;  
private static boolean [] 
 arrayCkDias =   {false,false,false,false,false,false,false,false};  
AlertDialog alertDialog;  
@Override 
protected void onCreate(Bundle savedInstanceState){  
super onCreate(savedInstanceState);  
setContentView (R.layout.datos_tiempo);  
Button dias2 = findViewById(R.id.dias);  
};  
public void botonClickdias(){  
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(context);  
alertDialogBuilder.setMultiChoiceItems(SoleTiempo.arrayDias,arrayCkDias, new DialogInterface.OnMultiChoiceClickListener() {  
@Override. 
public void onClick(DialogInterface dialog, int which, boolean isChecked) {  
switch (which) {  
case 0:  
 if(isChecked){  
       for(int i=0; i < 8; i++){  
        arrayCkDias[i]=true;};  
        diasselected = 255;};  
         case 1:    
        setdias=1;    
        if(isChecked){    
            diasselected= 
     diasselected | setdias;}    
        else {    
        diasselected =
        diasselected  & (~setdias);     
    };  
             case 2:    
            setdias=2;  
         if(isChecked) {  
         diasselected=   
diasselected | setdias;}    
        else.  
         {diasselected =
         diasselected  & 
 (~setdias);};  
        case 3:   
      setdias=4;   
       if(isChecked){  
        diasselected= 
      diasselected | setdias;}  
        else{   
    diasselected =  
    diasselected  & (~setdias); };  
    case 4:
    setdias=8;  
    if(isChecked){  
   diasselected =
    diasselected  & (~setdias);}   
    else{    
    diasselected =  
    diasselected  & (~setdias);};  
 case 5: ;
    setdias=16;
    if(isChecked){  
    diasselected = 
    diasselected | setdias;}
    else. 
    {diasselected =
    diasselected  & (~setdias);};  
    case 6:  
    setdias=32;   
    if(isChecked){  
    diasselected= diasselected | setdias; }  
    else{  
    diasselected =  
 diasselected  (~setdias);};  
    case 7:
    setdias=64;
    if(isChecked){
    diasselected= diasselected | setdias;}
    else{  
    diasselected =    
    diasselected  & 
(~setdias);};    
 };  
}  
}); 

 alertDialogBuildeg..setPositiveButton( "Ok",new DialogInterface.OnClickListenerr() { 
public void  onClick{  
DialogInterface dialog,int id) {  
alertDialog.dismiss(),  
 }  
 });  
  alertDialogBuilder.setNegativeButton("Cancel",new DialogInterface.OnClickListener() {  
public void onClick(  
 DialogInterface dialog,int id) {  
alertDialog.cancel();  
}  
});  
alertDialog = alertDialogBuilder.create();  
alertDialog.show();  
}  
}  
No checked errors.  

【问题讨论】:

  • 嗯,有什么问题?
  • 我无法执行此警报对话框没有检查错误。我找不到错误。我不知道阵列需要一个适配器,或者由于什么原因不工作并且不显示错误。

标签: android


【解决方案1】:

用这个替换你的 AlertDialog 代码

    AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(activity);
    alertDialogBuilder.setMultiChoiceItems(SoleTiempo.arrayDias, arrayCkDias, new DialogInterface.OnMultiChoiceClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which, boolean isChecked) {

        }
    });

    alertDialogBuilder.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int id) {
            alertDialog.dismiss();
        }
    });
    alertDialogBuilder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int id) {
            alertDialog.dismiss();
        }
    });
    alertDialog = alertDialogBuilder.create();
    alertDialog.show();

【讨论】:

【解决方案2】:

我没有再次编写编译代码就解决了这个问题。问题是我使用了一种方法和按钮的 arributes 的 onclick。我解决了这个问题,为按钮和我放置在 oncreate 覆盖中的所有代码创建了一个监听器,现在可以工作了。无论如何,我还有其他问题要解决一个选项是全部,并且必须检查所有其余部分。我试图修改构建器的数组,但没有奏效。因此,可能存在任何方法来更改所列项目的检查。有没有人知道是否存在这种方法或更改侦听器内部项目的方式?

解决的包在这里(已经应用程序未完成): https://1drv.ms/u/s!Asr3Ewn45KOLtHbMpKmhPSzgmTjj?e=t44nih

这里是期货更新的目录

https://1drv.ms/u/s!Asr3Ewn45KOLtGOqDkoMq20A-hbc?e=l1J2Nk

【讨论】:

    【解决方案3】:

    我还单独解决了使用 une 复选框的所有问题和一周中的几天使用 7 的问题。我使用了 AbsListView 和几个 IF

    final AbsListView listDias =  (AbsListView) alertDialog.getListView();  
    

    然后这就是如果

    if (((diasselected/128)==1) & (which>0) & (!(isChecked))){  
     setdias=128;  
     diasselected = diasselected  & (~setdias);  
     arrayCkDias[0]=false;  
    
    
    listDias.setItemChecked(0,false);  
    

    完整的包在这里

    https://1drv.ms/u/s!Asr3Ewn45KOLtHccP3GUaBsrs7dx?e=VWCbnN

    或在此目录中进行后续更改:

    https://1drv.ms/u/s!Asr3Ewn45KOLtGOqDkoMq20A-hbc?e=l1J2Nk

    【讨论】:

      猜你喜欢
      • 2012-08-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-29
      • 1970-01-01
      • 2016-12-08
      • 2012-05-14
      相关资源
      最近更新 更多