2012-06-20 2 views
0

Когда я создать два диалоговых окон, только один появляется, даже если условие для другого верно ..Как использовать два диалоговых окна в одном приложении?

Вот код

if (z<=18){ 
     showDialog(1); 
    } else { 
     showDialog(3); 
    } 
................................................................................................................................................................... 
    protected Dialog onCreateDialog(int id) 
    { 
     if (id== 1) 
     { 
      AlertDialog.Builder b=new AlertDialog.Builder(this); 
      b.setTitle("1st dialog"); 
      b.setPositiveButton("OK",new DialogInterface.OnClickListener() { 

         public void onClick(DialogInterface dialog, int which) { 
           // TODO Auto-generated method stub 
         } 
        }); 
      AlertDialog d=b.create(); 
      d.show(); 
     } 
     else 
     { 
      AlertDialog.Builder b2=new AlertDialog.Builder(this); 
      b2.setTitle("2nd dialog ");   
      b2.setPositiveButton("OK",new DialogInterface.OnClickListener() { 

         public void onClick(DialogInterface dialog, int which) { 
          // TODO Auto-generated method stub 
         } 
       }); 

      AlertDialog dialoog=b2.create(); 
      dialoog.show(); 
     } 
     return super.onCreateDialog(id); 
    } 
+0

И как создается 'z'? – Blundell

+0

инициализирован ?? float z = Float.parseFloat (String.valueOf (tv.getText())); – user1470125

+0

И так вы проверяете, какое число вы даете перед циклом? 'Log.d (« TAG »,« Z: »+ z);' p.s. если 'z' является пользователем, я бы просто сделал его' int' 'int z = Integer.parseInt (tv.getText(). toString());' – Blundell

ответ

0

Как оба условия могут быть правдой, если вы их в если еще?

+0

, даже если второе условие истинно, появляется первое диалоговое окно. – user1470125

0

Каким будет оба условия: true? Вы используете проверку состояния ifelse, которые являются эксклюзивными друг для друга, и только один из них будет работать одновременно. Следовательно, отображается только один диалог.

+0

Я думал, что он говорит, только один (Диалог A) когда-либо появляется, даже когда его логика говорит, что Dialog B должен показать – Blundell

+0

Blindell-Да, именно это происходит – user1470125

0

почему вы не инициализировать оба ваших AlertDialogs, и в зависимости от ситуации, вы просто показать один:

определение Диалоги:

//infodialog 
    infodialog = new AlertDialog.Builder(this).create(); 
    infodialog.setTitle("INFO"); 
    infodialog.setMessage(getApplicationContext().getString(R.string.info)); 
    infodialog.setButton("OK", new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int which) { 
     return; } 
    }); 
    //disclaimerdialog 
    disclaimerdialog = new AlertDialog.Builder(this).create(); 
    disclaimerdialog.setTitle("Disclaimer"); 
    disclaimerdialog.setMessage(getApplicationContext().getString(R.string.disclaimer)); 
    disclaimerdialog.setButton("OK", new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int which) { 
     return; } 
    }); 

и собирание один (я использовал optionmenu и переключатель , вы можете использовать любую if-функцию с вашим диалогом. show of the course):

public boolean onOptionsItemSelected(MenuItem item) { 
       switch (item.getItemId()){ 

       case R.id.info: 
        infodialog.show(); 
        return true; 
       case R.id.disclaimer: 
        disclaimerdialog.show(); 
        return true; 
Смежные вопросы