Search code examples
c#validationinputxamarin.androiddialog

How to create a input popup in Xamarin Android


Looking to create a popup where the user must type 'CONFIRM' to continue. I know how to develop a popup with 'CONTINUE' or 'CANCEL' on it but unsure of how to implement one that checks/validates the users input. Using native Xamarin on Android with C#.

This is what I have so far. I just need some way of comparing what the user has input to the word CONFIRM

EditText et = new EditText(this);
AlertDialog.Builder ad = new AlertDialog.Builder (this);
ad.setTitle ("Type text");
ad.setView(et); // <----
ad.show();

Solution

  • Create a layout with EditText named CustomDialog.xml.

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
       android:orientation="vertical"
       android:layout_width="match_parent"
       android:layout_height="match_parent">
       <EditText
           android:id="@+id/editText_Name"
           android:layout_width="match_parent"
           android:layout_height="wrap_content"/>
    </LinearLayout>
    

    Code in MainActivity.cs OnCreate method.

       var editText = LayoutInflater.Inflate(Resource.Layout.CustomDialog, null);
    
            var ad = (new AlertDialog.Builder(this)).Create();
            ad.SetTitle("Type text");
            ad.SetView(editText); // <----
            ad.SetButton("Confirm", ConfirmButton);
            ad.Show();
    

    The code of ConfirmButton.

     void ConfirmButton(object sender, DialogClickEventArgs e)
        {
            var dialog = (AlertDialog)sender;
            var username = (EditText)dialog.FindViewById(Resource.Id.editText_Name);
            var name = username.Text;
            if (name=="hello")
            {
    
            }
        }
    

    You could get the text of EditText now.

    enter image description here

    Updated:

    In Xamarin.forms, when you want to display a prompt, you could use DisplayPromptAsync.

     protected override void OnAppearing()
        {
            base.OnAppearing();
            PopUp();
        }
        public async void PopUp()
        {
            string s = await DisplayPromptAsync("Pop up Window", "Type text:", "Confirm", keyboard: Keyboard.Text);
            if (s == "hello")
            {
               //do something here...
            }
        }
    

    enter image description here

    Display Pop-ups: https://learn.microsoft.com/en-us/xamarin/xamarin-forms/user-interface/pop-ups