2015-10-04 2 views
2

Если пользователь нажимает на кнопку, появляется диалоговое окно с запросом на ввод строки, и в том же диалоговом окне есть кнопка «ОК», когда пользователь нажимает на нее, диалог должен закрыться. Это, по крайней мере, план, проблема в том, что после добавления обработчика событий к кнопке OK мое приложение зависнет, когда пользователь откроет диалог.Закрыть диалоговое окно при нажатии кнопки ОК на нем

addNewFamButton = FindViewById<Button>(Resource.Id.newFamilyButton); 
addNewFamButton.Click += (sender, e) => { 
    Dialog dialog = new Dialog(this); 
    dialog.SetContentView(Resource.Layout.addNewFamily); 
    dialog.SetTitle("Add new family to the list"); 
    dialog.Show(); 

    // Problem starts here: 
    Button saveNewFamily = FindViewById<Button>(Resource.Id.dialogButtonOK); 
    saveNewFamily.Click += (object o, EventArgs ea) => { dialog.Dispose(); };     
}; 

Я пробовал его с помощью dialog.Cancel() тоже, но у меня такие же результаты. Если я удалю последние две строки, диалог будет работать, но, очевидно, не будет закрыт.

ИСПРАВЛЕНО: Благодаря user370305 для простого решения:

Button saveNewFamily = dialog.FindViewById<Button>(Resource.Id.dialogButtonOK); 

ответ

2

Ваш OK кнопка является частью Dialog зрения, так что вы должны найти эту точку зрения с помощью диалога ссылку на объект, что-то подобное, (я не знаком с xamarin, но это один дает вам намек)

Изменить строку,

// Problem starts here: 
Button saveNewFamily = FindViewById<Button>(Resource.Id.dialogButtonOK); 

с

Button saveNewFamily = dialog.FindViewById<Button>(Resource.Id.dialogButtonOK); 
+0

Это было решением моих неловких проблем. – hungariandude

2

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

 // create an EditText for the dialog 
     final EditText enteredText = new EditText(this); 
     AlertDialog.Builder builder = new AlertDialog.Builder(this); 
     builder.setTitle("Title of the dialog"); 
     builder.setView(enteredText); 
     builder.setPositiveButton("OK", new DialogInterface.OnClickListener() 
     { 
      @Override 
      public void onClick(DialogInterface dialog, int id) 
      { 
       // perform any operation you want 
       enteredText.getText().toString());// get the text 

       // other operations 
       dialog.cancel(); // close the dialog 

      } 
     }); 
     builder.create().show(); 
Смежные вопросы