2013-04-30 123 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

我不知道,如果你說同樣的事情,但我從onCreate()方法來的onClick(移動

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

更輕鬆地解決了這一問題),就在builder.setView(config_view);