Hi,
Try this
8-->
public class modal : Activity
{
private bool mChoice = false;
private bool mQuitModal = false;
private IntPtr mMsgQueueNextMethod;
private IntPtr mMsgTargetField;
public modal()
{ }
public void showAlertDialog(Context context, string info)
{
if (!prepareModal())
return;
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.SetMessage(info);
builder.SetCancelable(false);
builder.SetPositiveButton("OK", (object o,
Android.Content.DialogClickEventArgs e) =>
{
this.mQuitModal = true;
builder.Dispose(); // was dialog.dismiss()
});
AlertDialog alert = builder.Create();
alert.Show();
doModal();
}
public bool showConfirmDialog(Context context, string info)
{
if (!prepareModal())
return false;
// reset choice
mChoice = false;
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.SetMessage(info);
builder.SetCancelable(false);
builder.SetPositiveButton("OK", (object o,
Android.Content.DialogClickEventArgs e) =>
{
this.mQuitModal = true;
this.mChoice = true;
builder.Dispose();
});
builder.SetNegativeButton("Cancel", (object o,
Android.Content.DialogClickEventArgs e) =>
{
mQuitModal = true;
mChoice = false;
builder.Dispose(); // probably wrong
});
AlertDialog alert = builder.Create();
alert.Show();
doModal();
return mChoice;
}
private bool prepareModal()
{
using (var MessageQueue_Class =
Java.Lang.Class.FromType(typeof(Android.OS.MessageQueue)))
using (var Message_Class =
Java.Lang.Class.FromType(typeof(Android.OS.Message)))
{
mMsgQueueNextMethod =
JNIEnv.GetMethodID(MessageQueue_Class.Handle,
"next", "()Landroid/os/Message;");
mMsgTargetField = JNIEnv.GetFieldID(Message_Class.Handle,
"target", "Landroid/os/Handler;");
return true;
}
}
private void doModal()
{
mQuitModal = false;
// get message queue associated with main UI thread
MessageQueue queue = Looper.MyQueue();
while (!mQuitModal)
{
// call queue.next(), might block
Message msg = null;
try
{
IntPtr _msg = JNIEnv.CallObjectMethod(queue.Handle,
mMsgQueueNextMethod);
if (_msg == IntPtr.Zero)
return;
using (msg =
Java.Lang.Object.GetObject<Android.OS.Message>(_msg,
JniHandleOwnership.TransferLocalRef))
{
IntPtr _target = JNIEnv.GetObjectField(msg.Handle,
mMsgTargetField);
if (_target == IntPtr.Zero)
{
mQuitModal = true;
return;
}
using (var target =
Java.Lang.Object.GetObject<Android.OS.Handler>(_target,
JniHandleOwnership.TransferLocalRef))
{
target.DispatchMessage(msg);
msg.Recycle();
}
}
}
catch (System.Exception e)
{ }
}
}
}
<--8
Modal dialogues aren't really something you find on Android, but where there
is a will...
PFJ
--
View this message in context:
http://mono-for-android.1047100.n5.nabble.com/messagebox-for-android-tp5709956p5709972.html
Sent from the Mono for Android mailing list archive at Nabble.com.
_______________________________________________
Monodroid mailing list
[email protected]
UNSUBSCRIBE INFORMATION:
http://lists.ximian.com/mailman/listinfo/monodroid