Ich persönlich würde nur ein paar Helfer Methoden schaffen die Hauptlogik zu bereinigen. Wenn dieser Code häufig angezeigt wird, können Sie eine Basisklasse Activity
erstellen, um die getIntentAction
-Methode zu speichern, oder eine statische Methode in einem Helper erstellen, der entweder Activity
oder Intent
als Parameter verwendet.
Für den Stringvergleich können Sie TextUtils.equals()
verwenden. Wenn Sie über eine Zeichenfolge verfügen, die den Aktionsname enthält, können Sie das alternativ als die linke Seite der equals
Methode verwenden. Stellen Sie sicher, dass Sie die Bestellung nicht zu einem späteren Zeitpunkt tauschen.
Einige Beispielcode:
public static final String WhateverAction = "whatever";
public String getIntentAction()
{
Intent intent = getIntent();
return intent == null ? null : intent.getAction();
}
Mit vergleichen Zeichenfolge auf der linken Seite:
public void processMyIntent()
{
String action = getIntentAction();
if(WhateverAction.equals(action))
{
// do something
}
else if("thisAlsoWorksAction".equals(action)
{
// do something else
}
else
{
// got null or unexpected value
}
}
TextUtils
Verwendung:
public void processMyIntentTextUtils()
{
String action = getIntentAction();
if(TextUtils.equals(action, WhateverAction))
{
// do something
}
if(TextUtils.equals(action, "anotherAction"))
{
// do something else
}
else
{
// got null or unexpected value
}
}
Mit einem Schalter:
public void processMyIntentSwitch()
{
String action = getIntentAction();
switch(action)
{
case WhateverAction:
//...
break;
default:
// got null or unexpected value
}
}
Sie auch weg mit nicht mit einer getIntentAction
Methode nur tun, diese Einzeiler bekommen konnte, obwohl es ein bisschen wortreich ist.!
String intentAction = getIntent() != null ? getIntent().getAction() : null;
Was passiert, wenn Sie überprüfen 'getIntent() getExtras() = null '? –
können Sie versuchen, catch Block für Nullzeiger Ausnahme – miskohut
, wenn Sie das gleiche Snippet mehrere Zeit haben, warum es nicht statisch machen? – k0sh