Autore Topic: Crash App  (Letto 277 volte)

Offline kiry32

  • Nuovo arrivato
  • *
  • Post: 14
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    s3
  • Sistema operativo:
    ubuntu 16.04
Crash App
« il: 09 Luglio 2016, 16:36:24 CEST »
0
Salve a tutti io ho creato un quiz ora stavo aggiornando l'app per non fare uscire sempre le stesse domande e avevo pensato ad una cosa così:
Codice (Java): [Seleziona]
Random casuale=new Random();
        int  scelta ;
        scelta=casuale.nextInt(60);

        if(scelta==scelta1) {
            scelta += 1;
        }
            if (scelta == scelta2) {
                scelta += 1;
                if(scelta> 60){
                    scelta-=2;
                }
            }
            if (scelta == scelta4) {
                scelta += 1;
                if(scelta> 60){
                    scelta-=2;
                }
            }
            if (scelta == scelta5) {
                scelta += 1;
                if(scelta> 60){
                    scelta-=2;
                }
            }
            if (scelta == scelta7) {
                scelta += 1;
                if(scelta> 60){
                    scelta-=2;
                }
            }

la pagina é questa:
Codice (Java): [Seleziona]
package com.kiry32.root.quizaia;

import android.content.DialogInterface;
import android.content.Intent;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import java.util.Random;


public class Domanda8 extends AppCompatActivity {

    String [] domande={qui tutte le domande};
    String [][] risposte={{qui stanno tutte le risp}}
    };
    int esatt_risp;
    int [] giuste = {0,3,2,2,1,2,0,0,3,2,3,2,0,2,1,3,0,1,2,3,2,1,0,3,0,1,1,1,1,1,2,1,0,1,0,3,3,1,2,0,0,3,2,2,3,0,1,0,3,1,1,2,0,1,2,1,1,1,2,2};
    int punteggio_ris=0;
    int punteggio_ris8;

    String domanda_8;
    String risposta_8;
    String domanda_7;
    String risposta_7;
    String domanda_6;
    String risposta_6;
    String domanda_5;
    String risposta_5;
    String domanda_4;
    String risposta_4;
    String domanda_3;
    String risposta_3;
    String domanda_2;
    String risposta_2;
    String domanda_1;
    String risposta_1;

    int scelta1;
    int scelta2;
    int scelta1_3;
    int scelta4;
    int scelta5;
    int scelta2_6;
    int scelta7;
    int scelta8;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_domanda8);


        punteggio_ris=getIntent().getExtras().getInt("puntegg");

        domanda_7=getIntent().getExtras().getString("dom7",domanda_7);
        risposta_7=getIntent().getExtras().getString("risp7",risposta_7);
        domanda_6=getIntent().getExtras().getString("dom6",domanda_6);
        risposta_6=getIntent().getExtras().getString("risp6",risposta_6);
        domanda_5=getIntent().getExtras().getString("dom5",domanda_5);
        risposta_5=getIntent().getExtras().getString("risp5",risposta_5);
        domanda_4=getIntent().getExtras().getString("dom4",domanda_4);
        risposta_4=getIntent().getExtras().getString("risp4",risposta_4);
        domanda_3=getIntent().getExtras().getString("dom3",domanda_3);
        risposta_3=getIntent().getExtras().getString("risp3",risposta_3);
        domanda_2=getIntent().getExtras().getString("dom2",domanda_2);
        risposta_2=getIntent().getExtras().getString("risp2",risposta_2);
        domanda_1=getIntent().getExtras().getString("dom1",domanda_1);
        risposta_1=getIntent().getExtras().getString("risp1",risposta_1);

        scelta1=getIntent().getExtras().getInt("scelta1",scelta1);
        scelta2=getIntent().getExtras().getInt("scelta2",scelta2);
        scelta1_3=getIntent().getExtras().getInt("scelta1_3",scelta1_3);
        scelta4=getIntent().getExtras().getInt("scelta4",scelta4);
        scelta5=getIntent().getExtras().getInt("scelta5",scelta5);
        scelta2_6=getIntent().getExtras().getInt("scelta2_6",scelta2_6);
        scelta7=getIntent().getExtras().getInt("scelta7",scelta7);


        Random casuale=new Random();
        int  scelta ;
        scelta=casuale.nextInt(60);

        if(scelta==scelta1) {
            scelta += 1;
        }
            if (scelta == scelta2) {
                scelta += 1;
                if(scelta> 60){
                    scelta-=2;
                }
            }
            if (scelta == scelta4) {
                scelta += 1;
                if(scelta> 60){
                    scelta-=2;
                }
            }
            if (scelta == scelta5) {
                scelta += 1;
                if(scelta> 60){
                    scelta-=2;
                }
            }
            if (scelta == scelta7) {
                scelta += 1;
                if(scelta> 60){
                    scelta-=2;
                }
            }


        scelta8=scelta;

        esatt_risp=giuste[scelta];


        if(esatt_risp == 0)
        {
            risposta_8=risposte[scelta][0];

        }
        if(esatt_risp == 1)
        {
            risposta_8=risposte[scelta][1];

        }
        if(esatt_risp == 2)
        {
            risposta_8=risposte[scelta][2];

        }
        if(esatt_risp == 3)
        {
            risposta_8=risposte[scelta][3];

        }



        final TextView domanda1=(TextView) findViewById(R.id.domanda8);
        domanda1.setText(domande[scelta]);

        domanda_8=domande[scelta];

        Button risposta0=(Button) findViewById(R.id.risposta0);
        risposta0.setText(risposte[scelta][0]);

        risposta0.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                controlloRisposta(0);
                punteggio_ris += punteggio_ris8;
                Intent d9 = new Intent(getApplicationContext(), Domanda9.class);
                d9.putExtra("puntegg",punteggio_ris);

                d9.putExtra("dom2",domanda_2);
                d9.putExtra("risp2",risposta_2);
                d9.putExtra("dom1",domanda_1);
                d9.putExtra("risp1",risposta_1);
                d9.putExtra("dom3",domanda_3);
                d9.putExtra("risp3",risposta_3);
                d9.putExtra("dom4",domanda_4);
                d9.putExtra("risp4",risposta_4);
                d9.putExtra("dom5",domanda_5);
                d9.putExtra("risp5",risposta_5);
                d9.putExtra("dom6",domanda_6);
                d9.putExtra("risp6",risposta_6);
                d9.putExtra("dom7",domanda_7);
                d9.putExtra("risp7",risposta_7);
                d9.putExtra("dom8",domanda_8);
                d9.putExtra("risp8",risposta_8);

                d9.putExtra("scelta1",scelta1);
                d9.putExtra("scelta2",scelta2);
                d9.putExtra("scelta1_3",scelta1_3);
                d9.putExtra("scelta4",scelta4);
                d9.putExtra("scelta5",scelta5);
                d9.putExtra("scelta2_6",scelta2_6);
                d9.putExtra("scelta7",scelta7);
                d9.putExtra("scelta8",scelta8);

                startActivity(d9);

            }
        });


        Button risposta1=(Button) findViewById(R.id.risposta1);
        risposta1.setText(risposte[scelta][1]);

        risposta1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                controlloRisposta(1);
                punteggio_ris += punteggio_ris8;
                Intent d9 = new Intent(getApplicationContext(), Domanda9.class);
                d9.putExtra("puntegg",punteggio_ris);

                d9.putExtra("dom2",domanda_2);
                d9.putExtra("risp2",risposta_2);
                d9.putExtra("dom1",domanda_1);
                d9.putExtra("risp1",risposta_1);
                d9.putExtra("dom3",domanda_3);
                d9.putExtra("risp3",risposta_3);
                d9.putExtra("dom4",domanda_4);
                d9.putExtra("risp4",risposta_4);
                d9.putExtra("dom5",domanda_5);
                d9.putExtra("risp5",risposta_5);
                d9.putExtra("dom6",domanda_6);
                d9.putExtra("risp6",risposta_6);
                d9.putExtra("dom7",domanda_7);
                d9.putExtra("risp7",risposta_7);
                d9.putExtra("dom8",domanda_8);
                d9.putExtra("risp8",risposta_8);

                d9.putExtra("scelta1",scelta1);
                d9.putExtra("scelta2",scelta2);
                d9.putExtra("scelta1_3",scelta1_3);
                d9.putExtra("scelta4",scelta4);
                d9.putExtra("scelta5",scelta5);
                d9.putExtra("scelta2_6",scelta2_6);
                d9.putExtra("scelta7",scelta7);
                d9.putExtra("scelta8",scelta8);

                startActivity(d9);

            }
        });


        Button risposta2=(Button) findViewById(R.id.risposta2);
        risposta2.setText(risposte[scelta][2]);

        risposta2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                controlloRisposta(2);
                punteggio_ris += punteggio_ris8;
                Intent d9 = new Intent(getApplicationContext(), Domanda9.class);
                d9.putExtra("puntegg",punteggio_ris);

                d9.putExtra("dom2",domanda_2);
                d9.putExtra("risp2",risposta_2);
                d9.putExtra("dom1",domanda_1);
                d9.putExtra("risp1",risposta_1);
                d9.putExtra("dom3",domanda_3);
                d9.putExtra("risp3",risposta_3);
                d9.putExtra("dom4",domanda_4);
                d9.putExtra("risp4",risposta_4);
                d9.putExtra("dom5",domanda_5);
                d9.putExtra("risp5",risposta_5);
                d9.putExtra("dom6",domanda_6);
                d9.putExtra("risp6",risposta_6);
                d9.putExtra("dom7",domanda_7);
                d9.putExtra("risp7",risposta_7);
                d9.putExtra("dom8",domanda_8);
                d9.putExtra("risp8",risposta_8);

                d9.putExtra("scelta1",scelta1);
                d9.putExtra("scelta2",scelta2);
                d9.putExtra("scelta1_3",scelta1_3);
                d9.putExtra("scelta4",scelta4);
                d9.putExtra("scelta5",scelta5);
                d9.putExtra("scelta2_6",scelta2_6);
                d9.putExtra("scelta7",scelta7);
                d9.putExtra("scelta8",scelta8);

                startActivity(d9);

            }
        });



        Button risposta3=(Button) findViewById(R.id.risposta3);
        risposta3.setText(risposte[scelta][3]);

        risposta3.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                controlloRisposta(3);
                punteggio_ris += punteggio_ris8;
                Intent d9 = new Intent(getApplicationContext(), Domanda9.class);
                d9.putExtra("puntegg",punteggio_ris);

                d9.putExtra("dom2",domanda_2);
                d9.putExtra("risp2",risposta_2);
                d9.putExtra("dom1",domanda_1);
                d9.putExtra("risp1",risposta_1);
                d9.putExtra("dom3",domanda_3);
                d9.putExtra("risp3",risposta_3);
                d9.putExtra("dom4",domanda_4);
                d9.putExtra("risp4",risposta_4);
                d9.putExtra("dom5",domanda_5);
                d9.putExtra("risp5",risposta_5);
                d9.putExtra("dom6",domanda_6);
                d9.putExtra("risp6",risposta_6);
                d9.putExtra("dom7",domanda_7);
                d9.putExtra("risp7",risposta_7);
                d9.putExtra("dom8",domanda_8);
                d9.putExtra("risp8",risposta_8);

                d9.putExtra("scelta1",scelta1);
                d9.putExtra("scelta2",scelta2);
                d9.putExtra("scelta1_3",scelta1_3);
                d9.putExtra("scelta4",scelta4);
                d9.putExtra("scelta5",scelta5);
                d9.putExtra("scelta2_6",scelta2_6);
                d9.putExtra("scelta7",scelta7);
                d9.putExtra("scelta8",scelta8);

                startActivity(d9);

            }
        });


    }


    private void controlloRisposta(int valore) {
        if (esatt_risp == valore) {
            punteggio_ris8 = +1;
        }

    }
    @Override
    public boolean onKeyDown(int KeyCode, KeyEvent event) {
        if((KeyCode == KeyEvent.KEYCODE_BACK)) {

            AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);;

            // set title
            alertDialogBuilder.setTitle("vuoi tornare al menu?");

            // set dialog message
            alertDialogBuilder
                    .setMessage("Premi si per tornare!")
                    .setCancelable(false)
                    .setPositiveButton("Si",new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog,int id) {
                            Intent miaActivity = new Intent(getApplicationContext(),MainActivity.class);
                            startActivity(miaActivity);
                        }
                    })
                    .setNegativeButton("No",new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int id) {
                            // if this button is clicked, just close
                            // the dialog box and do nothing
                            dialog.cancel();
                        }
                    });

            // create alert dialog
            AlertDialog alertDialog = alertDialogBuilder.create();

            // show it
            alertDialog.show();
        }





        return true;
    }

}

il problema è che mi da questo errore non sempre qualche volta:
Codice: [Seleziona]
07-09 16:10:01.393 6830-6830/com.kiry32.root.quizaia E/AndroidRuntime: FATAL EXCEPTION: main
                                                                       java.lang.RuntimeException: Unable to start activity ComponentInfo{com.kiry32.root.quizaia/com.kiry32.root.quizaia.Domanda8}: java.lang.ArrayIndexOutOfBoundsException: length=60; index=60
                                                                           at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2295)
                                                                           at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2349)
                                                                           at android.app.ActivityThread.access$700(ActivityThread.java:159)
                                                                           at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1316)
                                                                           at android.os.Handler.dispatchMessage(Handler.java:99)
                                                                           at android.os.Looper.loop(Looper.java:176)
                                                                           at android.app.ActivityThread.main(ActivityThread.java:5419)
                                                                           at java.lang.reflect.Method.invokeNative(Native Method)
                                                                           at java.lang.reflect.Method.invoke(Method.java:525)
                                                                           at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1046)
                                                                           at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:862)
                                                                           at dalvik.system.NativeStart.main(Native Method)
                                                                        Caused by: java.lang.ArrayIndexOutOfBoundsException: length=60; index=60
                                                                           at com.kiry32.root.quizaia.Domanda8.onCreate(Domanda8.java:408)
                                                                           at android.app.Activity.performCreate(Activity.java:5372)
                                                                           at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1104)
                                                                           at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2257)
                                                                           at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2349) 
                                                                           at android.app.ActivityThread.access$700(ActivityThread.java:159) 
                                                                           at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1316) 
                                                                           at android.os.Handler.dispatchMessage(Handler.java:99) 
                                                                           at android.os.Looper.loop(Looper.java:176) 
                                                                           at android.app.ActivityThread.main(ActivityThread.java:5419) 
                                                                           at java.lang.reflect.Method.invokeNative(Native Method) 
                                                                           at java.lang.reflect.Method.invoke(Method.java:525) 
                                                                           at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1046) 
                                                                           at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:862) 
                                                                           at dalvik.system.NativeStart.main(Native Method) 

mi sapete dire perchè e che fare per risolverlo??

Offline DCode

  • Utente junior
  • **
  • Post: 69
  • Respect: +20
    • Mostra profilo
  • Sistema operativo:
    Ubuntu 16.04 LTS
Re:Crash App
« Risposta #1 il: 09 Luglio 2016, 20:48:05 CEST »
0
La variabile scelta dato che poi la usi come indice per andare a prendere i valori dal tuo array, quando la generi deve assumere come valore
massimo 59 e non 60, altrimenti ti restituisce ArrayIndexOutOfBoundsException
┻━┻ ︵ヽ(°□°ヽ) Develop w/ ( ( ObjC || Swift ) && Java[ "Android" ] ) (╯°□°)╯︵ ┻━┻

Offline kiry32

  • Nuovo arrivato
  • *
  • Post: 14
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    s3
  • Sistema operativo:
    ubuntu 16.04
Re:Crash App
« Risposta #2 il: 10 Luglio 2016, 12:38:10 CEST »
0
La variabile scelta dato che poi la usi come indice per andare a prendere i valori dal tuo array, quando la generi deve assumere come valore
massimo 59 e non 60, altrimenti ti restituisce ArrayIndexOutOfBoundsException


ciao ho fatto come hai detto tu cambiando  qui:
Codice (Java): [Seleziona]
Random casuale=new Random();
        int  scelta ;
        scelta=casuale.nextInt(59);

ma ora non si apre proprio più e mi da questo errore:
Codice (Java): [Seleziona]
07-10 12:30:18.082 32501-32501/com.kiry32.root.quizaia E/AndroidRuntime: FATAL EXCEPTION: main
                                                                         java.lang.RuntimeException: Unable to start activity ComponentInfo{com.kiry32.root.quizaia/com.kiry32.root.quizaia.Domanda1}: java.lang.ArrayIndexOutOfBoundsException: length=60; index=1331560955
                                                                             at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2295)
                                                                             at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2349)
                                                                             at android.app.ActivityThread.access$700(ActivityThread.java:159)
                                                                             at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1316)
                                                                             at android.os.Handler.dispatchMessage(Handler.java:99)
                                                                             at android.os.Looper.loop(Looper.java:176)
                                                                             at android.app.ActivityThread.main(ActivityThread.java:5419)
                                                                             at java.lang.reflect.Method.invokeNative(Native Method)
                                                                             at java.lang.reflect.Method.invoke(Method.java:525)
                                                                             at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1046)
                                                                             at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:862)
                                                                             at dalvik.system.NativeStart.main(Native Method)
                                                                          Caused by: java.lang.ArrayIndexOutOfBoundsException: length=60; index=1331560955
                                                                             at com.kiry32.root.quizaia.Domanda1.onCreate(Domanda1.java:346)
                                                                             at android.app.Activity.performCreate(Activity.java:5372)
                                                                             at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1104)
                                                                             at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2257)
                                                                             at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2349)
                                                                             at android.app.ActivityThread.access$700(ActivityThread.java:159)
                                                                             at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1316)
                                                                             at android.os.Handler.dispatchMessage(Handler.java:99)
                                                                             at android.os.Looper.loop(Looper.java:176)
                                                                             at android.app.ActivityThread.main(ActivityThread.java:5419)
                                                                             at java.lang.reflect.Method.invokeNative(Native Method)
                                                                             at java.lang.reflect.Method.invoke(Method.java:525)
                                                                             at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1046)
                                                                             at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:862)
                                                                             at dalvik.system.NativeStart.main(Native Method)
« Ultima modifica: 10 Luglio 2016, 12:47:48 CEST da kiry32 »

Offline tonno16

  • Utente storico
  • *****
  • Post: 1169
  • Respect: +56
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Re:Crash App
« Risposta #3 il: 11 Luglio 2016, 00:46:05 CEST »
0
L'errore viene generato sicuramente da un altra riga. USA il debug

Offline kiry32

  • Nuovo arrivato
  • *
  • Post: 14
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    s3
  • Sistema operativo:
    ubuntu 16.04
Re:Crash App
« Risposta #4 il: 11 Luglio 2016, 13:17:24 CEST »
0
mi riporta sempre la io pensato una cosa ho creato questa classe:
Codice (Java): [Seleziona]
package com.kiry32.root.quizaia;

import java.util.Random;
import java.util.Vector;

/**
 * Created by root on 10/07/16.
 */

public  class RadAns {

         int  scDom;

        public  RadAns(){
            Vector  numbers=new Vector();

            Random casuale=new Random();

            scDom=casuale.nextInt(60);
            numbers.addElement(scDom);

            while (numbers.contains(scDom))
            {
                scDom=casuale.nextInt(60);
            }
        }

}

che viene richiamata in altre 12 classi così:
Codice (Java): [Seleziona]
RadAns scel= new RadAns();

        scl1=scel.scDom;

il problema è che anche usando Vector mi ripete dei numeri come posso fare??