2014-02-15 3 views
0

Как отключить кнопку «ОК» до выбора значения радио? Этот Dialogfragment показывает существующие почтовые учетные записи в однокнопочных переключателях. Я использовал это:Android: отключить кнопки DialogFragment OK до тех пор, пока не будет выбрано значение радиосвязи

Button buttonNo = alert.getButton(AlertDialog.BUTTON_POSITIVE);buttonNo.setEnabled(false); 

Но не Рабочая .Здесь мой код:

public String[] allemails() 
       { 

       _accountMgr = AccountManager.get(getActivity()); 
        Account [] accounts = _accountMgr.getAccounts(); 
        numberOfEmail = accounts.length ; 
        String [] emailAddress = new String[numberOfEmail]; 

        for (Account account : accounts) { 
         accountsList = account.name.toString(); 
         emailAddress[r] = accountsList; 
         r += 1;    
        } 

        MyAlertDialog f = new MyAlertDialog(); 
        Bundle args = new Bundle(); 
        args.putStringArray("Title", emailAddress); 
        f.setArguments(args); 

        return emailAddress; 
      } 


      @Override 
      public Dialog onCreateDialog(Bundle savedInstanceState) { 
       // Use the Builder class for convenient dialog construction 
       AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); 
       builder.setTitle(Html.fromHtml("<font color='#FFFF'>" + "Choose Account" + "</font>")); 

       builder.setIcon(R.drawable.ic_udinic); 
       builder.setCancelable(false) 
       .setSingleChoiceItems(allemails(), -1, new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface dialog, int id) 
{ 
         }}); 

         builder.setCancelable(false) 
         .setPositiveButton("Set", new DialogInterface.OnClickListener() { 


         public void onClick(DialogInterface dialog, int id) { 



           ListView lw = ((AlertDialog)dialog).getListView(); 
           CharSequence checkedItem = (CharSequence) lw.getAdapter().getItem(lw.getCheckedItemPosition()); 

           // Toast.makeText(getActivity(), checkedItem, Toast.LENGTH_LONG).show(); 


           ((Main)getActivity()).doPositiveClick(checkedItem); 
           dialog.dismiss(); 

         } 
        }); 

        builder.setCancelable(false) 
        .setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface dialog, int id) { 
           // User cancelled the dialog 

          //Toast.makeText(getActivity(), "You Press Cancel Button", Toast.LENGTH_LONG).show(); 

          dialog.cancel(); 

         } 

        }); 
       // Create the AlertDialog object and return it 
       return builder.create(); 

      } 

ответ

1

ОК, вместо того, чтобы отключить кнопку ОК из Dialog вы можете программно выбрать один из RadioButton s по умолчанию, как это происходит при запуске вашего Dialog. попробуйте это:

radiobtn1.isChecked(true); 
+0

Не работает эта логика @SMR –

+0

Вы внедряете ее на 'onCreateDialog'? – SMR

+0

Да @SMR. Я новичок в Android. By by ... Все значения радио являются динамическими. Как я могу установить/инициализировать «radiobtn1». Я использовал try & catch block. Но не работал –

0

Добавить OnStart метод и сделать следующие шаги:

public void onStart(){ 
      super.onStart(); 
      dialog.getButton(Dialog.BUTTON_POSITIVE).setEnabled(false); 
     } 

Сначала добавить одну строку в начале класса:

private AlertDialog dialog; 

Кроме того, внутри вашей onCreateDialog метод, внизу добавить строку ниже:

dialog = builder.create(); 

Это сработало для меня. Удачи.

Смежные вопросы