2012-06-28 4 views
0

У меня есть две радиокнопки в качестве группы радиостанций и кнопка «выполнить» - поэтому вы выбираете радиокнопку, нажимаете «выполнить» и отсылаете альтернативные диалоги в зависимости от выбора радио. Я получаю ошибку во втором к последней строке (создание предупреждения конструкторе) в следующем:Почему эта переменная «не решается»?

private OnClickListener myClickcalcHandler = new OnClickListener() { 
    public void myClickcalcHandler(View view) { 
     switch (view.getId()) { 
     case R.id.calcbutton: 
      RadioButton insideButton = (RadioButton) findViewById(R.id.radioButton1); 
      RadioButton outsideButton = (RadioButton) findViewById(R.id.radioButton1); 
      } 
     if 
     (outsideButton.isChecked()){ 
      //do what you want 
      AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
         context); 
       // set title 
       alertDialogBuilder.setTitle("some outside activity"); 
       button = (Button) findViewById(R.id.emailbutton); 
       // set dialog message 
       alertDialogBuilder 
        .setMessage(R.string.email_long) 
        .setCancelable(false) 
        .setNegativeButton("Close",new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface dialog,int id) { 
          // if this button is clicked, just close 
          // the dialog box and do nothing 
          dialog.cancel(); 
         } 
        }); 
     } 
     else if 
     (insideButton.isChecked()){ 
      //do what you want 
      AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
        context); 
      // set title 
      alertDialogBuilder.setTitle("some inside activity"); 
      button = (Button) findViewById(R.id.emailbutton); 
      // set dialog message 
      alertDialogBuilder 
        .setMessage(R.string.email_long) 
        .setCancelable(false) 
        .setNegativeButton("Close",new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface dialog,int id) { 
          // if this button is clicked, just close 
          // the dialog box and do nothing 
          dialog.cancel(); 
         } 
        }); 
     } 
      // create alert dialog 
      AlertDialog alertDialog = alertDialogBuilder.create(); 
      // show it 
     alertDialog.show(); 

      } 

поэтому редактор затмение просто говорит «alertDialogBuilder не может быть решена», и я не знаю, почему ,

ответ

0

decalare AlertDialog глобально означает снаружи, если/иначе блок, как:

private OnClickListener myClickcalcHandler = new OnClickListener() { 
    public void myClickcalcHandler(View view) { 
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
         context); 

     switch (view.getId()) { 
     case R.id.calcbutton: 
      RadioButton insideButton = (RadioButton) findViewById(R.id.radioButton1); 
      RadioButton outsideButton = (RadioButton) findViewById(R.id.radioButton1); 
      } 
     //YOUR CODE HERE..... 
+0

привет - спасибо за быстрые ответы - я попробовал это все и до сих пор получить «не может быть решен» на // создать диалоговое окно предупреждения \t \t \t AlertDialog alertDialog = alertDialogBuilder.create(); - Не уверен, имеет ли значение, что я использовал alertDialogBuilder ранее в скрипте над скопированным разделом, но я полагаю, что могу использовать его много раз? –

0

Вы должны объявить AlertDialog.Builder alertDialogBuilder за пределами if/else конструкции, а затем определить его внутри.

Как это:

AlertDialog.Builder alertDialogBuilder; 
    if 
    (outsideButton.isChecked()){ 
     //do what you want 
     alertDialogBuilder = new AlertDialog.Builder(
        context); 
     // ... 
    } 
    else if 
    (insideButton.isChecked()){ 
     //do what you want 
     alertDialogBuilder = new AlertDialog.Builder(
       context); 
     // ... 
    } 
     // create alert dialog 
     AlertDialog alertDialog = alertDialogBuilder.create(); 
     // show it 
    alertDialog.show(); 
0

Делайте это перед вашим если еще.

AlertDialog.Builder alertDialogBuilder = null; 

и заменить

AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(context); 

с

alertDialogBuilder = new AlertDialog.Builder(context); 
+0

привет - спасибо за подсказки - я пробовал все эти и все еще получаю «не может быть разрешен» в диалоге // create alert AlertDialog alertDialog = alertDialogBuilder.create(); - Не уверен, имеет ли значение, что я использовал alertDialogBuilder ранее в скрипте над скопированным разделом, но я полагаю, что могу использовать его много раз? - –

+0

Если у вас все еще есть проблемы, отправьте новый код, который вы используете, а также строки, содержащие ошибки и ошибки. – Eric

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