Autore Topic: Aggiungere elementi Activity tramite addView  (Letto 466 volte)

Offline Renovatio

  • Nuovo arrivato
  • *
  • Post: 17
  • Respect: 0
    • Google+
    • Mostra profilo
  • Dispositivo Android:
    I9100
  • Sistema operativo:
    Windows 8
Aggiungere elementi Activity tramite addView
« il: 07 Ottobre 2013, 21:58:06 CEST »
0
Salve, è mio intento realizzare un'Activity che alla pressione di un bottone aggiunga una EditText.

questo è il codice Java che ho scritto:
Codice (Java): [Seleziona]
public class MainActivity extends Activity {
        private RelativeLayout lay;
        private EditText materia;


        @Override
        protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_main);
                lay = (RelativeLayout)findViewById(R.id.main);
                Button aggiungi = (Button)findViewById(R.id.aggiungi);
                materia = (EditText)findViewById(R.id.materia);
                aggiungi.setOnClickListener(onClick());
        }
       
        private OnClickListener onClick() {
            return new OnClickListener() {
                @Override
                public void onClick(View v) {
                    lay.addView(materia);
                }
            };
        }
}

e qui l'xml:
Codice (XML): [Seleziona]
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:tools="http://schemas.android.com/tools"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:paddingBottom="@dimen/activity_vertical_margin"
   android:paddingLeft="@dimen/activity_horizontal_margin"
   android:paddingRight="@dimen/activity_horizontal_margin"
   android:paddingTop="@dimen/activity_vertical_margin"
   android:id="@+id/main"
   tools:context=".MainActivity" >

    <EditText
       android:id="@+id/materia"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_alignParentLeft="true"
       android:layout_alignParentTop="false"
       android:ems="10"
       android:inputType="text" />

   
    <Button
       android:id="@+id/aggiungi"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_alignParentBottom="true"
       android:text="Aggiungi" />

</RelativeLayout>

Eseguendo il codice, il programma esce in un "IllegalStartOfStatement" nel comando addview.

Qualcuno saprebbe illuminarmi?

Grazie mille!

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Aggiungere elementi Activity tramite addView
« Risposta #1 il: 07 Ottobre 2013, 22:59:31 CEST »
0
Puoi copiare esattamente la linea di errore che contiene IllegalStartOfStatement?

(di simile conosco illegal start of expression sollevata a compile-time)
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline Renovatio

  • Nuovo arrivato
  • *
  • Post: 17
  • Respect: 0
    • Google+
    • Mostra profilo
  • Dispositivo Android:
    I9100
  • Sistema operativo:
    Windows 8
Re:Aggiungere elementi Activity tramite addView
« Risposta #2 il: 07 Ottobre 2013, 23:17:16 CEST »
0
Errore mio, perdono!
L'errore esatto è IllegalStateException lanciato da
Codice (Java): [Seleziona]
lay.addView(materia);
Non so se aiuta ma il debug mi tira fuori questo:
Codice: [Seleziona]
RelativeLayout(ViewGroup).addViewInner(View, int, ViewGroup$LayoutParams, boolean) line: 1970       
RelativeLayout(ViewGroup).addView(View, int, ViewGroup$LayoutParams) line: 1865       
RelativeLayout(ViewGroup).addView(View, int, ViewGroup$LayoutParams) line: 1865       
RelativeLayout(ViewGroup).addView(View, int, ViewGroup$LayoutParams) line: 1865       
RelativeLayout(ViewGroup).addView(View, int, ViewGroup$LayoutParams) line: 1865       

Però non capisco dove possa essere il problema nella mia chiamata.

Grazie mille!