1
resposta

[Dúvida] Crash após tentar prosseguir sem um endereço

Tenho este erro no meu logcat que não estou conseguindo entender.

   E/AndroidRuntime: FATAL EXCEPTION: main
    Process: br.com.aplicativo.graffiti, PID: 22744
    java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0
    at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:255)
    at java.util.ArrayList.get(ArrayList.java:308)
    at br.com.originalsoftware.taxifonecliente.asyncTask.RemoteCalculateRideCostAsyncTask.onPostExecute(RemoteCalculateRideCostAsyncTask.java:127)
    at br.com.originalsoftware.taxifonecliente.asyncTask.RemoteCalculateRideCostAsyncTask.onPostExecute(RemoteCalculateRideCostAsyncTask.java:34)
    at android.os.AsyncTask.finish(AsyncTask.java:636)
    at android.os.AsyncTask.access$500(AsyncTask.java:177)
    at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:653)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loop(Looper.java:135)
    at android.app.ActivityThread.main(ActivityThread.java:5254)
    at java.lang.reflect.Method.invoke(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:372)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)

Minha classe que está sendo reclamada é:

@Override
protected void onPostExecute(Void result) {
    if (isCancelled()) return;

  if (progressDialog != null && progressDialog.isShowing())
        progressDialog.dismiss();

    if (isSuccess) {
        // TODO remover
        if (callTaxiRequest.getRouteCarType() == null) {
            callTaxiRequest.setRouteData(routeData);
            callTaxiRequest.setRouteCarType(routeData.getCarTypes().get(0));
        }
        onSuccess.execute(this);

    } else {
        new AlertDialog.Builder(context)
            .setCancelable(false)
            .setTitle(R.string.attention)
            .setMessage(R.string.calculate_ride_cost_error)
            .setPositiveButton(R.string.yes, (dialog, which) -> {
                new RemoteCalculateRideCostAsyncTask(context, config)
                        .setCallTaxiRequest(callTaxiRequest)
                        .setOriginAddress(originAddress)
                        .setDestination(destination)
                        .setShowEstimationDialog(showEstimationDialog)
                        .setOnSuccess(onSuccess)
                        .execute();
            })
            .setNegativeButton(R.string.no, null)
            .show();
    }
}

Gostaria de saber oque eu poderia ser feito para passar deste crash.

1 resposta

Olá Alexandro, tudo bem ?

O erro se da por conta de você tentar acessar o index que não existe em um array, teriamos que analiser o código em um contexto mais amplo para avaliar, porém, eu acredito que em algum momento que você pega algum dado de um array, esse array talvez não esteja sendo populado.

Fico à disposição pra gente tentar resolver :)