2013-04-30 2 views
0

В моем приложении Android отображается AlertDialog, и все в порядке в первый раз. Однако, после отображения и отмены диалога, он во второй раз сработает во время show(). Я пробовал предложения, сделанные в подобных сообщениях, но ничего не помогло. Вот мой код:Почему AlertDialog.dialog.show() врезался во второй раз?

addButton.setOnClickListener(this); 
} 

@Override 
public void onClick (View view) { 
    switch (view.getId()) { 
    case R.id.config_add: 
     builder = new AlertDialog.Builder(this); 
     builder.setTitle(R.string.create_content_server_config_title); 
     builder.setView(config_view); 
     builder.setPositiveButton(R.string.dialog_confirm_create_config_button, new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int id) { 
       // User clicked Create button 
       Toast.makeText(ManageContentServers.this, config_name.getText().toString(), Toast.LENGTH_LONG).show(); 
      } 
     }); 
     builder.setNegativeButton(R.string.dialog_config_cancel_button, new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int id) { 
       // User cancelled the dialog 
       dialog.dismiss(); 
      } 
     }); 
     dialog = builder.create(); 
     dialog.show(); 
     break; 
    } 
} 

ответ

0

Его так как вы используете «setView». Вам нужно каждый раз воссоздавать диалог!

private void showDialog() { 
    builder = new AlertDialog.Builder(this); builder.setTitle(R.string.create_content_server_config_title); builder.setView(config_view); builder.setPositiveButton(R.string.dialog_confirm_create_config_button, new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface dialog, int id) { 
         // User clicked Create button 
         Toast.makeText(ManageContentServers.this, config_name.getText().toString(), Toast.LENGTH_LONG).show(); 
        } 
       }); 
       builder.setNegativeButton(R.string.dialog_config_cancel_button, new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface dialog, int id) { 
         // User cancelled the dialog 
         dialog.dismiss(); 
        } 
        }); 
        dialog = builder.create(); 
        dialog.show(); 
     } 


    case R.id.config_add: 
    showDialog(); 
    break; 
0

Я не уверен, если вы говорите, то же самое, но я исправил проблему легко перемещая

config_view = inflater.inflate(R.layout.ecs_config_fields, null); 

от метода OnCreate() к OnClick(), как раз перед builder.setView (config_view);