Autore Topic: Problema con Spinner in un AlertDialog!  (Letto 1304 volte)

Offline Mikykly91

  • Utente junior
  • **
  • Post: 91
  • Respect: 0
    • Google+
    • Mostra profilo
  • Dispositivo Android:
    Htc one, Nexus 7 2013
  • Play Store ID:
    Michele Marconi
  • Sistema operativo:
    Surface 2 pro win 8.1
Problema con Spinner in un AlertDialog!
« il: 05 Ottobre 2012, 13:30:39 CEST »
0
Salve a tutti ho un problema, come da titolo con uno spinner che si trova in un alertdialog creata da me, non riesco a rimpirlo con dei dati, mi da errore null pointer exception non capisco perchè.

Questo è il file customlayout.xml sarebbe il file xml creato da me per fare un alertbox personalizzata:

Codice (XML): [Seleziona]
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:id="@+id/layout_root"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent"
   android:orientation="horizontal"
   android:padding="10dp" >

    <EditText
       android:id="@+id/EditTextAgg"
       android:layout_width="fill_parent"
       android:layout_height="wrap_content" />

    <Spinner
       android:id="@+id/dialogspinner"
       android:layout_width="fill_parent"
       android:layout_height="wrap_content"
       android:layout_alignLeft="@+id/EditTextAgg"
       android:layout_below="@+id/EditTextAgg"
       android:layout_marginTop="14dp" />




    <Button
       android:id="@+id/dialogaccetta"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_alignLeft="@+id/dialogspinner"
       android:layout_below="@+id/dialogspinner"
       android:layout_marginTop="14dp"
       android:text="Accetta"
       android:textSize="18sp" />


    <Button
       android:id="@+id/dialogrifiuta"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_alignBaseline="@+id/dialogaccetta"
       android:layout_alignBottom="@+id/dialogaccetta"
       android:layout_alignRight="@+id/dialogspinner"
       android:text="Rifiuta"
       android:textSize="18sp" />

</RelativeLayout>


Nella classe in cui lo richiamo ho solamente scritto questo:

Codice: [Seleziona]
String[] DayOfWeek = {"Sunday", "Monday", "Tuesday",
                                                      "Wednesday", "Thursday", "Friday", "Saturday"};

                           
                        final Dialog dialog = new Dialog(Pizza.this);
                            dialog.setContentView(R.layout.customlayout);

                        ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(Pizza.this,
                        android.R.layout.simple_spinner_item, DayOfWeek);
                            Spinner s = (Spinner) findViewById( R.id.dialogspinner );
                            s.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT));
                                    s.setAdapter(arrayAdapter);




Dove sta l'errore? se non assegno dati allo Spinner l'allertbox si apre senza problemi, se assegno i dati va in crash.

Aiuto, sto impazzendo!

grazie 1000 in anticipo :D

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:Problema con Spinner in un AlertDialog!
« Risposta #1 il: 05 Ottobre 2012, 13:32:54 CEST »
0
Nel LogCat ci dovrebbe essere scritta la riga che genera l'exception, se hai problemi a interpretarlo puoi postarlo a vediamo di individuarla.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline Mikykly91

  • Utente junior
  • **
  • Post: 91
  • Respect: 0
    • Google+
    • Mostra profilo
  • Dispositivo Android:
    Htc one, Nexus 7 2013
  • Play Store ID:
    Michele Marconi
  • Sistema operativo:
    Surface 2 pro win 8.1
Re:Problema con Spinner in un AlertDialog!
« Risposta #2 il: 05 Ottobre 2012, 13:59:27 CEST »
0
Codice: [Seleziona]
10-05 13:18:13.648: E/AndroidRuntime(5607): FATAL EXCEPTION: main
10-05 13:18:13.648: E/AndroidRuntime(5607): java.lang.NullPointerException
10-05 13:18:13.648: E/AndroidRuntime(5607):         at michele.restaurant.Pizza$2$2.onItemLongClick(Pizza.java:207)
10-05 13:18:13.648: E/AndroidRuntime(5607):         at android.widget.AbsListView.performLongPress(AbsListView.java:2921)
10-05 13:18:13.648: E/AndroidRuntime(5607):         at android.widget.AbsListView$CheckForLongPress.run(AbsListView.java:2871)
10-05 13:18:13.648: E/AndroidRuntime(5607):         at android.os.Handler.handleCallback(Handler.java:615)
10-05 13:18:13.648: E/AndroidRuntime(5607):         at android.os.Handler.dispatchMessage(Handler.java:92)
10-05 13:18:13.648: E/AndroidRuntime(5607):         at android.os.Looper.loop(Looper.java:137)
10-05 13:18:13.648: E/AndroidRuntime(5607):         at android.app.ActivityThread.main(ActivityThread.java:4745)
10-05 13:18:13.648: E/AndroidRuntime(5607):         at java.lang.reflect.Method.invokeNative(Native Method)
10-05 13:18:13.648: E/AndroidRuntime(5607):         at java.lang.reflect.Method.invoke(Method.java:511)
10-05 13:18:13.648: E/AndroidRuntime(5607):         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
10-05 13:18:13.648: E/AndroidRuntime(5607):         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
10-05 13:18:13.648: E/AndroidRuntime(5607):         at dalvik.system.NativeStart.main(Native Method)

grazie

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:Problema con Spinner in un AlertDialog!
« Risposta #3 il: 05 Ottobre 2012, 14:09:45 CEST »
0
Citazione
10-05 13:18:13.648: E/AndroidRuntime(5607): java.lang.NullPointerException
10-05 13:18:13.648: E/AndroidRuntime(5607):         at michele.restaurant.Pizza$2$2.onItemLongClick(Pizza.java:207)

Riga 207 di Pizza.java
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline Mikykly91

  • Utente junior
  • **
  • Post: 91
  • Respect: 0
    • Google+
    • Mostra profilo
  • Dispositivo Android:
    Htc one, Nexus 7 2013
  • Play Store ID:
    Michele Marconi
  • Sistema operativo:
    Surface 2 pro win 8.1
Re:Problema con Spinner in un AlertDialog!
« Risposta #4 il: 05 Ottobre 2012, 14:15:02 CEST »
0
questo l'avevo capito...

da errore a:  s.setAdapter(arrayAdapter);

vorrei sapere il problema dove sta, imposto allo spinner un semplice array adapter!!

Suggerimenti?

Offline Sakazaki

  • Utente normale
  • ***
  • Post: 396
  • Respect: +74
    • Mostra profilo
  • Dispositivo Android:
    Sony xperia Z
  • Play Store ID:
    Saka Labs
  • Sistema operativo:
    Windows 8
R: Problema con Spinner in un AlertDialog!
« Risposta #5 il: 05 Ottobre 2012, 14:39:21 CEST »
0
Il findViewById con cui provi a recuperare lo spinner non lo trova e ti torna null.
Verifica ma ad occhio sembra quello il problema.

Inviato dal mio XT910 con Tapatalk 2


Offline Mikykly91

  • Utente junior
  • **
  • Post: 91
  • Respect: 0
    • Google+
    • Mostra profilo
  • Dispositivo Android:
    Htc one, Nexus 7 2013
  • Play Store ID:
    Michele Marconi
  • Sistema operativo:
    Surface 2 pro win 8.1
Re:Problema con Spinner in un AlertDialog!
« Risposta #6 il: 05 Ottobre 2012, 14:46:42 CEST »
0
Non credo, è nel custumlayout che richiamo prima per impostare il layout della alertdialog.

se io tolgo la riga sopra scritta dove da errore, la dialog viene aperta anche lo spinner, visualizzato ma natuaralmente non riceve i dati.
Il problema sta quando passo i dati allo spinner, ma il codice l'avevo anche trovato in diversi siti internet, fanno tutti così!

 :-( :-(

Offline Sakazaki

  • Utente normale
  • ***
  • Post: 396
  • Respect: +74
    • Mostra profilo
  • Dispositivo Android:
    Sony xperia Z
  • Play Store ID:
    Saka Labs
  • Sistema operativo:
    Windows 8
Re:Problema con Spinner in un AlertDialog!
« Risposta #7 il: 05 Ottobre 2012, 15:11:33 CEST »
+1
Non credo, è nel custumlayout che richiamo prima per impostare il layout della alertdialog.

Hai ragione scusa, non mi ero accorto del setLayoutParams che fai subito prima.

Uhm...
Codice (Java): [Seleziona]
Spinner s = (Spinner) findViewById( R.id.dialogspinner );
non dovrebbe essere invece
Codice (Java): [Seleziona]
Spinner s = (Spinner) dialog.findViewById( R.id.dialogspinner );
visto che lo spinner dialogspinner lo imposti sul dialog?

Offline Mikykly91

  • Utente junior
  • **
  • Post: 91
  • Respect: 0
    • Google+
    • Mostra profilo
  • Dispositivo Android:
    Htc one, Nexus 7 2013
  • Play Store ID:
    Michele Marconi
  • Sistema operativo:
    Surface 2 pro win 8.1
Re:Problema con Spinner in un AlertDialog!
« Risposta #8 il: 05 Ottobre 2012, 15:30:26 CEST »
0
Hai ragione scusa, non mi ero accorto del setLayoutParams che fai subito prima.

Uhm...
Codice (Java): [Seleziona]
Spinner s = (Spinner) findViewById( R.id.dialogspinner );
non dovrebbe essere invece
Codice (Java): [Seleziona]
Spinner s = (Spinner) dialog.findViewById( R.id.dialogspinner );
visto che lo spinner dialogspinner lo imposti sul dialog?

Hai perfettamente ragione, che svista madornale!!
Certo in questi casi Eclipse non aiuta!

Grazie ancora.  :-P

Offline MarcoDuff

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1073
  • Respect: +202
    • Google+
    • marcoduff
    • Mostra profilo
    • MarcoDuff's Blog
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Play Store ID:
    MarcoDuff
  • Sistema operativo:
    Windows 7
Re:Problema con Spinner in un AlertDialog!
« Risposta #9 il: 05 Ottobre 2012, 15:41:52 CEST »
0
Certo in questi casi Eclipse non aiuta!

Eclipse ti visualizza il logcat, quello è l'aiuto più grosso.

Visto che sbagliavi l'assegnazione di "s" prendendolo dalla view sbagliata, s ha valore null. Quindi come ti diceva bradipao il logcat ti dava come errore la riga 207 di Pizza.java che corrisponde sicuramente (non può essere altrimenti) a s.setLayoutParams e non a s.setAdapter.

Quindi Eclipse sicuramente ti ha dato tutti gli strumenti per correggere l'errore, serve soltanto un poco di attenzione in più per capire quello che ti viene detto.

 ;-)