2013-07-24 2 views
0

У меня есть небольшая проблема с прослушивателем onClick. У меня есть диалог как с положительными и отрицательными кнопки, и положительная кнопка должна работать так:Android onClick on possitive button

если (оператор == TRUE) -> нажав на кнопку положительной будет делать некоторые вещи и если (оператор == ложь) -> нажатие на положительную кнопку покажет Toast.makeText(), но это не закроет диалоговое окно.

Заранее благодарен!

+0

Проверить эту ссылку http://developer.android.com/reference/android/app/Dialog.html#cancel() & http://developer.android.com/ reference/android/app/Dialog.html # увольнять() ... для более подробного сообщения ur ur – user1140237

ответ

0

Вам нужно будет вызвать метод close для его закрытия. Поместите эту строку на последней строке кнопки поз/нег слушателя:

dialog.cancel(); 

где диалог является экземпляром DialogInterface, который передается в качестве параметра. в

DialogInterface.OnClickListener.onClick(DialogInterface ,int);

ОБНОВЛЕНИЕ:

builder.setNeutralButton("Ustaw", new DialogInterface.OnClickListener() { 
       @Override 
       public void onClick(DialogInterface dialog, int id) { 
         getRecurrence(whichType, finishType); 
         if(isRecurrenceProperlySet) { 
           //do some stuff 

         } 
         else { 
Toast.makeText(contextThemeWrapper, "Set data!", Toast.LENGTH_SHORT).show(); 
} 
dismiss(); 
       } 
     }); 

Как я уже сказал ранее, переместить эту строку в последней строке слушателя.

+0

Если я нажму кнопку положительной и отрицательной кнопки, то мой AlertDialog немедленно закроется, но я хочу проверить свое утверждение для true/false, а затем if false -> там будет Toast и все еще диалог будет открыт, если истинный диалог отклонит – dejvid

+0

Показать ваш код. – wtsang02

+0

http://pastebin.com/2QbwtaxW – dejvid

0

раз попробовать этот

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.layout); 
    findViewById(R.id.test).setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      show(); 
     } 
    }); 

} 

AlertDialog alertDialogBox; 
private OnClickListener clickListner = new OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     show(); 
    } 
}; 
private boolean conditionVal = false; 

public void show() { 

    AlertDialog.Builder b = new AlertDialog.Builder(this); 
    alertButtonValue = false; 
    b.setNegativeButton("YES", new DialogInterface.OnClickListener() { 
     @Override 
     public void onClick(DialogInterface dialog, int which) { 
     } 
    }); 
    b.setPositiveButton("No", new DialogInterface.OnClickListener() { 

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

     } 
    }); 
    this.alertDialogBox = b.create(); 
    this.alertDialogBox.setTitle("Helllo"); 
    this.alertDialogBox.setMessage("message..."); 

    alertDialogBox.setOnShowListener(new DialogInterface.OnShowListener() { 
     @Override 
     public void onShow(DialogInterface dialog) { 
      if (alertButtonValue == false) { 
       Button button = alertDialogBox 
         .getButton(DialogInterface.BUTTON_NEGATIVE); 
       button.setOnClickListener(new View.OnClickListener() { 
        @Override 
        public void onClick(View v) { 
         if (!conditionVal) 
          Toast.makeText(getApplicationContext(), 
            "Condition not satisfied", 
            Toast.LENGTH_SHORT).show(); 
        } 
       }); 
       alertButtonValue = true; 
      } else { 
       Toast.makeText(getApplicationContext(), "Hello", 
         Toast.LENGTH_SHORT).show(); 
      } 
     } 
    }); 
    this.alertDialogBox.show(); 
} 

private boolean alertButtonValue = false;