2014-01-10 1 views
1

내가 도와 줄 수 있으면 3 가지 선택 사항이있는 단일 선택 경고 대화 상자가 있습니다. 처음에 NEXT 버튼을 비활성화했습니다 (선택 사항이 선택되지 않았습니다). 사용자가 선택 항목 중 하나를 선택하면 NEXT 버튼을 활성화하려고합니다. 이것은 내가 시도한 코드이다.단일 선택 경고 대화 상자에서 양수 버튼 사용/사용 안 함

int involvementInIncident; 

case DIALOG_ADD_A_PERSON_INVOLVEMENT_ONE: 

     builder.setTitle("Involvement in this Incident"); 
     builder.setSingleChoiceItems(incidentInvolvement, -1, 
       new DialogInterface.OnClickListener() { 

        @Override 
        public void onClick(DialogInterface dialog, int which) { 

         involvementInIncident = which;       
         //involvementInIncident = ((AlertDialog)dialog).getListView().getCheckedItemPosition(); 
         Toast.makeText(getApplicationContext(),""+ involvementInIncident, Toast.LENGTH_SHORT).show(); 


        } 
       });   
     builder.setPositiveButton("Next", 
       new DialogInterface.OnClickListener() { 
        @Override 
        public void onClick(DialogInterface dialog, int which) {      
         //Toast.makeText(getApplicationContext(),""+ involvementInIncident, Toast.LENGTH_SHORT).show(); 
         showDialog(DIALOG_ADD_A_PERSON_PERSON_TYPE_TWO); 

        } 

       }); 
     builder.setNegativeButton("Cancel", 
       new DialogInterface.OnClickListener() { 

        @Override 
        public void onClick(DialogInterface dialog, int which) { 
         dialog.cancel(); 


        } 
       });  
     AlertDialog alertInvolvement = builder.create(); 
     alertInvolvement.show();    
     final Button buttonPositiveInvolvement = alertInvolvement.getButton(AlertDialog.BUTTON_POSITIVE); 
     buttonPositiveInvolvement.setEnabled(false); 

     if(involvementInIncident == 0 || involvementInIncident == 1 || involvementInIncident==2){ 
      buttonPositiveInvolvement.setEnabled(true); 
      //Toast.makeText(getApplicationContext(),"person responsiblee", Toast.LENGTH_SHORT).show(); 

     } 
     else 
     { 
      buttonPositiveInvolvement.setEnabled(false); 
     } 

     return dialog; 

귀하의 도움에 감사드립니다. 는

+0

WHU는 쉽게이 링크는 내 같은 문제를 해결했기 때문에 당신이 하나를 통해 갈 수 – dipali

+0

이 모든 일을 처리 할 수 ​​dialog.so 우리의 정의를 만들 수 없습니다. 요구 사항에 따라 세 개의 버튼이있는 경고 대화 상자가 표시됩니다. http://www.learn2crack.com/2013/11/android-alertdialog-example.html – Poison

답변

0

당신은이 같은 onClick에서 버튼을 활성화해야합니다 감사합니다

@Override 
public void onClick(DialogInterface dialog, int which) { 
    //your other code for toast 
    buttonPositiveInvolvement.setEnabled(true); 
} 

는 그래서 선택의 여지 선택의 버튼을 가능하게 할 것이다.

희망이 도움이됩니다.

+0

나는 그것을 시도했다. "show()"메서드 다음에 buttonPositiveInvolvement를 초기화 했으므로 "해결할 수 없습니다"라고 표시됩니다. – BRDroid

+0

** buttonPositiveInvolvement **를 전역 적으로 선언 하시겠습니까 ?? – Piyush

+0

show 메소드를 실행하기 전에 초기화하십시오. @ user3046669 –

0
public class MainActivity extends Activity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     calldialog(0); 
    } 

    int call = 0; 

    public void calldialog(final int call1) { 
     call = call1; 
     final AlertDialog.Builder builder = new AlertDialog.Builder(this); 
     builder.setIcon(android.R.drawable.ic_dialog_info); 
     builder.setTitle("Alert dialog title"); 
     builder.setMessage("Dialog message"); 
     builder.setCancelable(false); 

     builder.setPositiveButton("cancel", 
       new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface arg0, int arg1) { 
         builder.setCancelable(false); 
         call = 1; 
         calldialog(call); 
        } 
       }); 
     builder.setNegativeButton("ok", new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface arg0, int arg1) { 
       call = 1; 
       calldialog(call); 
      } 
     }); 
     builder.setNeutralButton("next", new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface arg0, int arg1) { 
       call = 0; 
       calldialog(call); 
      } 
     }); 
     AlertDialog dialog = builder.create(); 
     dialog.show(); 

     // After calling show method, you need to check your condition and 
     // enable/ disable buttons of dialog 
     if (call == 0) { 
      dialog.getButton(Dialog.BUTTON_NEUTRAL).setEnabled(false); // BUTTON1 
     } else { 
      dialog.getButton(Dialog.BUTTON_POSITIVE).setEnabled(false); // BUTTON1 
      dialog.getButton(Dialog.BUTTON_NEGATIVE).setEnabled(false); // BUTTON1 
     } 
    } 
} 

나는 많은 검색을하고 있습니다 ..... 그렇다면 당신의 요구에 따라 몇 가지 논리를 제공 할 것입니다.이 코드는 귀하의 요구 사항에 따라 완벽하게 작동한다고 생각합니다.

+0

안녕하세요, 내 요구 사항은 3 개의 선택 항목이있는 singleChoiceItem입니다. 처음에는 NEXT 버튼이 내 프로그램에서 제대로 작동하지 않지만 항목을 선택하면 NEXT 버튼을 사용하려고합니다. 나는이 부분에서 고심하고있다. – BRDroid

4

마지막으로 작동합니다. 도와 주신 Piyush와 Mystic Magic에게 감사드립니다. 여기에 코드를 게시하면 다른 사람들을 도울 수 있습니다. 전역 초기화 buttonPositiveInvolvement 단추 buttonPositiveInvolvement;

요약 : 항목을 선택하면 단일 선택 AlertDialog에서 포지티브 버튼 사용/사용 안 함. (처음에 NEXT 버튼을 사용할 수 없으면 항목을 선택하면 NEXT 버튼이 활성화됩니다)

// 전체적으로 버튼 buttonPositiveInvolvement;

경우 DIALOG_ADD_A_PERSON_INVOLVEMENT_ONE :

 builder.setTitle("Involvement in this Incident"); 
     builder.setSingleChoiceItems(incidentInvolvement, -1, 
       new DialogInterface.OnClickListener() { 

        @Override 
        public void onClick(DialogInterface dialog, int which) {            
         //to enable the the NEXT button 
         buttonPositiveInvolvement.setEnabled(true); 

        } 
       });   
     builder.setPositiveButton("Next", 
       new DialogInterface.OnClickListener() { 
        @Override 
        public void onClick(DialogInterface dialog, int which) {      

         showDialog(DIALOG_ADD_A_PERSON_PERSON_TYPE_TWO); 

        } 

       }); 
     builder.setNegativeButton("Cancel", 
       new DialogInterface.OnClickListener() { 

        @Override 
        public void onClick(DialogInterface dialog, int which) { 
         dialog.cancel(); 


        } 
       });    
     //This sequence needs to be followed to get it working or else it might screw up 
     AlertDialog alertInvolvement = builder.create();    
     alertInvolvement.show(); 
     buttonPositiveInvolvement = alertInvolvement.getButton(AlertDialog.BUTTON_POSITIVE);    
     buttonPositiveInvolvement.setEnabled(false); 

     return dialog;