2012-12-18 153 views
1

我試圖使用alertdialog從用戶接收數據,第一次使用它時,沒有問題,但是如果我第二次投射alertdialog應用程序崩潰。AlertDialog在第二次投射時崩潰

final AlertDialog.Builder alert = new AlertDialog.Builder(this); 
     final LinearLayout marco=new LinearLayout(this); 
     final EditText input = new EditText(this); 
     final EditText input2 = new EditText(this); 
     final TextView nom=new TextView(this); 
     nom.setText("Nombre:"); 
     final TextView ap=new TextView(this); 
     ap.setText("Apellido:"); 
     input.setWidth(500); 
     input2.setWidth(500); 
     ((LinearLayout)marco).addView(nom); 
     ((LinearLayout)marco).addView(input); 
     ((LinearLayout)marco).addView(ap); 
     ((LinearLayout)marco).addView(input2); 
     alert.setTitle("Introduce Datos:"); 
     marco.setOrientation(LinearLayout.VERTICAL); 
     alert.setView(marco); 
     alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int whichButton) { 
       String value = input.getText().toString().trim(); 
       String value2 = input2.getText().toString().trim(); 
       Toast.makeText(getApplicationContext(), value, Toast.LENGTH_SHORT).show(); 
       String nombre=value,apellido=value2; 
      db.execSQL("INSERT INTO Usuarios (codigo, nombre, apellido) " + 
         "VALUES (" + codigo + ", '" + nombre +"','"+apellido+"')"); 
       codigo++; 
       RellenarSpinner(db); 

      } 
     }); 
     alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int whichButton) { 
       dialog.cancel(); 
       ((AlertDialog.Builder) alert).setView(marco); 
      } 
     }); 
final Button alta=(Button)findViewById(R.id.btnAlta); 
alta.setOnClickListener(new OnClickListener(){ 

      public void onClick(View arg0) { 
       alert.show(); 
      }}); 
+0

可以發佈錯誤 – urveshpatel50

+0

發佈您的logcat或調試以找出哪一行導致您的應用程序崩潰 –

+0

java.lang.IllegalStateException:指定的子級別具有父級。您必須先調用子對象的父對象的removeView()。 – EdMont

回答

0

當我開始使用alertdialogs時,我遇到了同樣的問題。嘗試製作一個全局變量public AlertDialog myAlert;然後在出現對話框時使用此變量。或者直接使用代碼:new AlertDialog.Builder.set .... set。(...)。show(); ...

+0

這裏是一個貼子,你有一個工作代碼,你可以使用http://stackoverflow.com/questions/13645605/dialog-didnt-show/13645725#comment18749719_13645725 – JanBo

+0

不適合我 –

相關問題