Autore Topic: Problema Dialog  (Letto 231 volte)

Offline MarcoMarco

  • Nuovo arrivato
  • *
  • Post: 42
  • Respect: 0
    • Mostra profilo
Problema Dialog
« il: 04 Agosto 2016, 11:51:56 CEST »
0
Salve a tutti
Sto avendo dei problemi riguardanti la gestione di Dialog

In pratica attraverso il tocco di un bottone viene visualizzato un customdialog contenente una textview e due bottoni, al tocco dei due bottoni (bottone_si e bottone_no) comparira un toast dicendo appositamente si o no in base al bottone ed infine chiude il dialog.

Per ragioni a me sconosciute dopo che riesco a far visualizzare il dialog e clicco sui due bottoni mi da un errore di tipo NullPointerException  o_O

Vi posto il codice e il logcat

Codice (Java): [Seleziona]
@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_orologio);

        ImageView image1=(ImageView) findViewById(R.id.bottone_azzera);

        image1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Dialog dialog=new Dialog(Orologio.this);
                dialog.setContentView(R.layout.custom_dialog_azzera);
                dialog.setTitle("Sicuro di Azzerare?");
                dialog.show();
            }
        });

        Button bsi=(Button) findViewById(R.id.button_si);
        Button bno=(Button) findViewById(R.id.button_no);



            bsi.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    Toast.makeText(Orologio.this, "Si", Toast.LENGTH_SHORT).show();

                    Dialog dialog=new Dialog(Orologio.this);
                    dialog.cancel();

                }
            });

        bno.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Toast.makeText(Orologio.this, "No", Toast.LENGTH_SHORT).show();
                Dialog dialog=new Dialog(Orologio.this);
                dialog.cancel();

            }
        });
        }

E questi sono gli errori
Codice (Java): [Seleziona]
Process: com.example.marco.aaa, PID: 31572
                                                                       java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.marco.aaa/com.example.marco.aaa.Orologio}: java.lang.NullPointerException
                                                                           at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2433)
                                                                           at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2484)
                                                                           at android.app.ActivityThread.access$800(ActivityThread.java:158)
                                                                           at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1391)
                                                                           at android.os.Handler.dispatchMessage(Handler.java:110)
                                                                           at android.os.Looper.loop(Looper.java:193)
                                                                           at android.app.ActivityThread.main(ActivityThread.java:5486)
                                                                           at java.lang.reflect.Method.invokeNative(Native Method)
                                                                           at java.lang.reflect.Method.invoke(Method.java:515)
                                                                           at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:829)
                                                                           at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:645)
                                                                           at dalvik.system.NativeStart.main(Native Method)
                                                                        Caused by: java.lang.NullPointerException
                                                                           at com.example.marco.aaa.Orologio.onCreate(Orologio.java:60)
                                                                           at android.app.Activity.performCreate(Activity.java:5368)
                                                                           at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1090)
                                                                           at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2387)
                                                                           at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2484)
                                                                           at android.app.ActivityThread.access$800(ActivityThread.java:158)
                                                                           at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1391)
                                                                           at android.os.Handler.dispatchMessage(Handler.java:110)
                                                                           at android.os.Looper.loop(Looper.java:193)
                                                                           at android.app.ActivityThread.main(ActivityThread.java:5486)
                                                                           at java.lang.reflect.Method.invokeNative(Native Method)
                                                                           at java.lang.reflect.Method.invoke(Method.java:515)
                                                                           at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:829)
                                                                           at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:645)
                                                                           at dalvik.system.NativeStart.main(Native Method)

Non riesco a capire il perchè spero che qualcuno di voi mi sappia dare una delucidazione in merito

Offline NetGEL

  • Utente normale
  • ***
  • Post: 196
  • Respect: +9
    • Google+
    • Mostra profilo
  • Play Store ID:
    NetGEL
Re:Problema Dialog
« Risposta #1 il: 04 Agosto 2016, 14:55:39 CEST »
+1
Ciao,
una domanda ma i due button bsi e bno sono nel layout custom_dialog_azzera?

Se la risposta è sì gli oggetti bsi e bno sono null
« Ultima modifica: 04 Agosto 2016, 15:00:23 CEST da NetGEL »

Offline DCode

  • Utente junior
  • **
  • Post: 69
  • Respect: +20
    • Mostra profilo
  • Sistema operativo:
    Ubuntu 16.04 LTS
Re:Problema Dialog
« Risposta #2 il: 04 Agosto 2016, 15:00:11 CEST »
+1
Citazione
Ciao,
una domanda ma i due button bsi e bno sono nel layout custom_dialog_azzera?
Presumendo di si,

Il problema è che i 2 button sono nella view del dialog e non nella view della tua activity.
Quindi, dopo aver fatto dialog.show(); fai
Codice (Java): [Seleziona]
Button bsi=(Button) dialog.findViewById(R.id.button_si);
Button bno=(Button) dialog.findViewById(R.id.button_no);

E nell'onClickListener dei button fai quello che devi fare, ma per nascondere il dialog rendi final la variabile e all'interno del listener
Codice (Java): [Seleziona]
dialog.dismiss();
A disposizione  ;-)
┻━┻ ︵ヽ(°□°ヽ) Develop w/ ( ( ObjC || Swift ) && Java[ "Android" ] ) (╯°□°)╯︵ ┻━┻

Offline NetGEL

  • Utente normale
  • ***
  • Post: 196
  • Respect: +9
    • Google+
    • Mostra profilo
  • Play Store ID:
    NetGEL
Re:Problema Dialog
« Risposta #3 il: 04 Agosto 2016, 15:01:52 CEST »
+1
Presumendo di si,

Il problema è che i 2 button sono nella view del dialog e non nella view della tua activity.
Quindi, dopo aver fatto dialog.show(); fai
Codice (Java): [Seleziona]
Button bsi=(Button) dialog.findViewById(R.id.button_si);
Button bno=(Button) dialog.findViewById(R.id.button_no);

E nell'onClickListener dei button fai quello che devi fare, ma per nascondere il dialog rendi final la variabile e all'interno del listener
Codice (Java): [Seleziona]
dialog.dismiss();
A disposizione  ;-)



Appunto :) Mi hai tolto le parole di bocca

Offline MarcoMarco

  • Nuovo arrivato
  • *
  • Post: 42
  • Respect: 0
    • Mostra profilo
Re:Problema Dialog
« Risposta #4 il: 04 Agosto 2016, 16:43:55 CEST »
0
Ho provato come avete detto voi e mi avete risolto il problema vi ringrazio  :D