Для тех, кто заинтересован в реализации диалогового окна для получения результата, но без с использованием onActivityResult , вот пример с использованием обратных вызовов . Таким образом, вы можете вызвать это пользовательское диалоговое окно из любого места и сделать что-то в соответствии с выбором.
КОРОТКИЙ ПУТЬ
public void getDialog(Context context, String title, String body,
DialogInterface.OnClickListener listener){
AlertDialog.Builder ab = new AlertDialog.Builder(context);
ab
.setTitle(title)
.setMessage(body)
.setPositiveButton("Yes", listener)
.setNegativeButton("Cancel", listener)
;//.show();
Dialog d=ab.create();
d.setCanceledOnTouchOutside(false);
d.show();
}
private void showDialog(){
DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
switch (which){
case DialogInterface.BUTTON_POSITIVE:
//DO
break;
case DialogInterface.BUTTON_NEGATIVE:
//DO
break;
}
}
};
getDialog(
this,
"Delete",
"Are you sure to delete the file?",
dialogClickListener
);
}
Другой способ , подходит, если вам нужно реализовать различные варианты диалоговых окон, поскольку вы можете определить все действия в одном месте.
MyDialog.java
public class MyDialog{
public void deleteDialog(Context context){
DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
switch (which){
case DialogInterface.BUTTON_POSITIVE:
if(listener!=null)
listener.onDeleteDialogResponse(true);
break;
case DialogInterface.BUTTON_NEGATIVE:
if(listener!=null)
listener.onDeleteDialogResponse(false);
break;
}
}
};
AlertDialog.Builder ab = new AlertDialog.Builder(context);
ab.setMessage("Are you sure to delete?")
.setPositiveButton("Yes", dialogClickListener)
.setNegativeButton("Cancel", dialogClickListener)
.show();
}
/** my listner */
public interface MyDialogListener{
public void onDeleteDialogResponse(boolean respononse);
}
private MyDialogListener listener;
public void setListener(MyDialogListener listener) {
this.listener = listener;
}
}
Используйте это так
private void showDialog(){
MyDialog dialog=new MyDialog();
dialog.setListener(new MyDialog.MyDialogListener() {
@Override
public void onDeleteDialogResponse(boolean respononse) {
if(respononse){
//toastMe("yessss");
//DO SOMETHING IF YES
}else{
//toastMe("noooh");
//DO SOMETHING IF NO
}
}
});
dialog.deleteDialog(this);
}