2016-07-20 10 views
0

übergebe. Der Aufruf dieser Methode und das Übergeben von null im zweiten Parameter stürzt ab.Die Anwendung stürzt mit der Nullzeigerausnahme ab, wenn ich den Nullwert an die Methode

App.revertMessage(actContext, null, name); 

    public static void revertMessage(final Context ctx, final Item item, 
     final String name) { 

    logite("revertMessage()", "item " + item == null ? "" : item.code    // it is crashing here with null pointer exception 
      + " name : " + name == null ? "" : item.name); 
} 

public static void logite(String tag, String msg) { 
    tag = "sTrack " + tag; 
    Log.e(tag, msg); 
} 

Item-Klasse ist

public class Item { 

public String code, name, packName; 

public Item(HashMap<String, String> data) { 
    code = data.get(XT.ITEM_CODE); 
    name = data.get(XT.ITEM_NAME) + "[" + code + "]"; 
    packName = data.get(XT.PACK_NAME); 
} 

/** 
* Copy constructor 
* 
* @param item 
*/ 
public Item(Item item) { 
    code = item.code; 
    name = item.name; 
    packName = item.packName; 
}} 

Wenn i Nullwert an die Methode übergeben es abstürzt, ich weiß nicht, warum meine Logik falsch ist oder was. Bitte helfen Sie mir bei der Lösung dieses Problems.

+1

Mögliche Duplikat [Was für eine Nullpointer ist, und wie kann ich es beheben?] (Http://stackoverflow.com/questions/218384/ what-is-a-nullpointerexception-and-wie-do-i-fix-it) – GhostCat

+0

@GhostCat das ist richtig -> item == null? "": item.code –

+0

Im Allgemeinen ist das eine gültige Idee. Trotzdem könnten Sie dafür eine kleine Hilfsmethode erstellen; diese wiederholten?: Ausdrücke machen es einfach sehr schwer, den Ausdruck als Ganzes zu lesen. – GhostCat

Antwort

1

Überprüfen Sie, ob item Null ist, anstatt eine Operation zu verwenden.

if (item != null) { 
     logite("revertMessage()", "item " + item.code 
       + " name : " + item.name); 
    } 
    else { 
     logite("revertMessage()", "item " 
       + " name : "); //weird message tho 
    } 

Nicht sicher, ob es funktionieren wird, aber es könnte

+0

Danke, dass es funktioniert .. –

+0

Froh, dass ich half =) –

0

Weil item.name immer noch null sein kann.

logite("revertMessage()", "item " + item == null ? "" : item.code    
      + " name : " + name == null ? "" : item.name); 
         ^change to item 

Dies ist das gleiche wie es so nennen:

if(item == null) // "" 
if(name == null) // "" , item.name() // item is still null 

ändern name mit item und Sie sind gut zu gehen.

Verwandte Themen