Tentative d'invoquer la méthode virtuelle 'boolean java.util.Liste de tableaux.isEmpty () sur un objet nul de référence
Je suis l'envoi de 2 types de demandes vers le serveur une fois si la route est connue, les données seront transmises et insérées dans la table. De l'autre, si la route est inconnu puis le serveur sera demandé de fournir l'application android de la route tant qu'il y a des données disponibles pour calculer l'itinéraire, sinon la route est de 0.
dans onPostExecute
je vérifie si le 'routeList' n'est pas vide et pas null si j'obtiens cette erreur:
Erreur:
05-25 20:33:29.107: E/AndroidRuntime(1946): FATAL EXCEPTION: main
05-25 20:33:29.107: E/AndroidRuntime(1946): Process: com.bustracker, PID: 1946
05-25 20:33:29.107: E/AndroidRuntime(1946): java.lang.NullPointerException: Attempt to invoke virtual method 'java.util.Iterator java.util.ArrayList.iterator()' on a null object reference
05-25 20:33:29.107: E/AndroidRuntime(1946): at com.bustracker.PostData$MyAsyncTask.onPostExecute(PostData.java:131)
05-25 20:33:29.107: E/AndroidRuntime(1946): at com.bustracker.PostData$MyAsyncTask.onPostExecute(PostData.java:1)
05-25 20:33:29.107: E/AndroidRuntime(1946): at android.os.AsyncTask.finish(AsyncTask.java:632)
05-25 20:33:29.107: E/AndroidRuntime(1946): at android.os.AsyncTask.access$600(AsyncTask.java:177)
05-25 20:33:29.107: E/AndroidRuntime(1946): at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:645)
05-25 20:33:29.107: E/AndroidRuntime(1946): at android.os.Handler.dispatchMessage(Handler.java:102)
05-25 20:33:29.107: E/AndroidRuntime(1946): at android.os.Looper.loop(Looper.java:145)
05-25 20:33:29.107: E/AndroidRuntime(1946): at android.app.ActivityThread.main(ActivityThread.java:5944)
05-25 20:33:29.107: E/AndroidRuntime(1946): at java.lang.reflect.Method.invoke(Native Method)
05-25 20:33:29.107: E/AndroidRuntime(1946): at java.lang.reflect.Method.invoke(Method.java:372)
05-25 20:33:29.107: E/AndroidRuntime(1946): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1389)
05-25 20:33:29.107: E/AndroidRuntime(1946): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1184)
onPostExecute():
ArrayList<Integer> routes = new ArrayList<Integer>();
@Override
protected void onPostExecute(Void result) {
for (int item: routes){
System.out.println("The output from the onPostExecute: "+item);
}
//Intent with Conetxt of the Asyntask class and
if (!routes.isEmpty() && (routes != null)) {
//if(routes !=null ){
Intent intent = new Intent(mContext, MainActivity.class);
intent.putIntegerArrayListExtra("stop_route", routes);
intent.putExtra("stop_distance", distance);
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
mContext.startActivity(intent);
} else {
Log.e("123", "Avoiding null pointer, the routes are null!!!");
}
}
onNewIntent():
@Override
protected void onNewIntent(Intent intent) {
//TODO Auto-generated method stub
super.onNewIntent(intent);
//getIntent() should always return the most recent
setIntent(intent);
Bundle extras = getIntent().getExtras();
if (extras != null && extras.containsKey("stop_route")) {
double distance = extras.getDouble("stop_distance");
System.out.println("The distance is: "+ distance);
if (distance <= 15) {
stop_popup(extras);
} else {
final ArrayList<Integer> routeList = extras
.getIntegerArrayList("stop_route");
route_number = routeList.get(0);
System.out.println("The route number is: " + route_number);
}
} else {
System.out.println("The intent is empty: ");
}
}
- Il y a 2 références à
onPostExecute
dans votre trace de la pile: en PostData' classe sur la ligne 1 et un en "PostData' à nouveau, mais sur la ligne 132. Sont que vous cherchez à la droite "PostData' méthode à suivre l'erreur? - Après la suppression de la Boucle de
for (int item: routes)
il fonctionne maintenant
Vous devez vous connecter pour publier un commentaire.
vous devriez demander d'abord si les routes != null comme:
Le && évaluer la condition première, puis la deuxième, de sorte que si les routes est nul et vous ne les routes.IsEmpty (), elle renvoie une erreur.
Mais si vous demandez d'abord si les routes est nulle et il l'est, il n'évalue pas la deuxième condition.
Je pense que le problème est dans cette ligne
Vous essayez d'extraire la liste des endroits où les routes est null ou vide
Pourquoi n'essayez-vous pas de ce genre ?