2015-04-15 7 views
5

ho una finestra di allerta e mi metterò di testo con TextView ma quando io lo chiamo una seconda volta, l'applicazione si blocca con l'errore:È necessario chiamare removeView() sul padre del primo figlio con AlertView

04-15 19:37:48.433: E/AndroidRuntime(907): java.lang.IllegalStateException: 
    The specified child already has a parent. You must call removeView() on 
    the child's parent first. 

la mia fonte di Java:

public class MainActivity extends ActionBarActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     final RelativeLayout rLayout = (RelativeLayout) findViewById(R.id.relativeLayout); 
     Button btn1 = (Button) findViewById(R.id.button1); 
     final AlertDialog.Builder build = new AlertDialog.Builder(MainActivity.this); 
     build.setTitle("Ders Adı Giriniz"); 
     final EditText dersAdiGir = new EditText(MainActivity.this); 
     build.setView(dersAdiGir); 
     final LinearLayout layoutDers = (LinearLayout) findViewById(R.id.layoutDers); 

     build.setPositiveButton("Tamam", new DialogInterface.OnClickListener() { 

      @Override 
      public void onClick(DialogInterface dialog, int which) { 

       Editable girilenDers = dersAdiGir.getText(); 
       TextView tv1 = new TextView(MainActivity.this); 
       tv1.setText(girilenDers); 
       layoutDers.addView(tv1); 
       dialog.dismiss(); 
       build.create(); 

      } 
     }); 

     btn1.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       AlertDialog alert = build.create(); 
       alert.show(); 
      } 
     }); 




    } 
} 

Please help me, ringrazia tutti

risposta

9

Si sta creando una nuova istanza della AlarmDialog ogni clic del pulsante. Creare un AlarmDialog finale al di fuori della classe interna OnClickListener.

Ecco la correzione:

 final AlertDialog alert = build.create(); 

     btn1.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       alert.show(); 
      } 
     }); 
+0

Wohoooooo! Grazie aggiustarlo :) –

+0

Non funziona in un ViewHolder con avviso finale AlertDialog.Builder – delive

+0

non ha funzionato anche se l'ho creato prima –

Problemi correlati