xamarin - Assign/return value onClick event, return it send/receive on DependencyService -


i need assign value click event in custom dialogalert, return value and, dependency service, read in class.

this class calls dependencyservice method:

bool respuesta; if (device.os == targetplatform.ios) {     respuesta = await displayalert(strings.turno_confirmartitulo, strings.turno_confirmarmensaje,                                     strings.si, strings.btncancelar); } else {     respuesta = dependencyservice.get<inttbsmensajes> ().mostrarmensaje(         strings.turno_confirmartitulo, strings.turno_confirmarmensaje); } if(respuesta) {// something} 

and method builds dialogalert:

public bool mostrarmensaje(string p_titulo, string p_mensaje) {     objbuilder = new alertdialog.builder(forms.context, resource.style.myalertdialogtheme);     objbuilder.settitle(p_titulo);     objbuilder.setmessage(p_mensaje);     objbuilder.seticon(resource.drawable.ic_question);     objbuilder.setcancelable(false);     bool respuesta = false;      objdialog = objbuilder.create();     objdialog.setbutton((int)(dialogbuttontype.positive), strings.si, (sender, e) =>    {        respuesta = true;    });      objdialog.setbutton((int)dialogbuttontype.negative, strings.no, (sender, e) =>    {        respuesta = false;    });      objdialog.show();     return respuesta; } 

really, don't know wrong. hope can me, please :) much

you can make modal style alert using autoresetevent , wrapping in task , call async style.

here how structure it:

example:

alertdialog objdialog; public async task<bool> mostrarmensaje(string p_titulo, string p_mensaje) {     objdialog = new alertdialog.builder(forms.context)        .settitle(p_titulo)        .setmessage(p_mensaje)        .setcancelable(false)        .create();     bool respuesta = false;      await task.run(() =>     {         var waithandle = new autoresetevent(false);         objdialog.setbutton((int)(dialogbuttontype.positive), "yes", (sender, e) =>         {            respuesta = true;            waithandle.set();         });          objdialog.setbutton((int)dialogbuttontype.negative, "no", (sender, e) =>         {            respuesta = false;            waithandle.set();         });          runonuithread(() =>         {             objdialog.show();         });         waithandle.waitone();     });     objdialog.dispose();     return respuesta; } 

usage:

var result = await dependencyservice.get<inttbsmensajes>().mostrarmensaje("stack", "overflow"); log.debug("respuesta", result.tostring()); 

result:

enter image description here

[respuesta] true 

Comments

Popular posts from this blog

javascript - Slick Slider width recalculation -

jsf - PrimeFaces Datatable - What is f:facet actually doing? -

angular2 services - Angular 2 RC 4 Http post not firing -