我个人只是创建一些辅助方法来清理主逻辑。如果这是经常出现的代码,您可以创建一个基类Activity
类来保存getIntentAction
方法,或者在帮助程序中创建一个静态方法,该帮助程序将Activity
或其Intent
作为参数。
对于字符串比较,您可以使用TextUtils.equals()
。或者,如果您有一个包含操作名称的字符串,则可以将其用作equals
方法的左侧。只要确保你稍后不交换订单。
一些示例代码:
public static final String WhateverAction = "whatever";
public String getIntentAction()
{
Intent intent = getIntent();
return intent == null ? null : intent.getAction();
}
使用左手边比较字符串:
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
:
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
}
}
使用switch:
public void processMyIntentSwitch()
{
String action = getIntentAction();
switch(action)
{
case WhateverAction:
//...
break;
default:
// got null or unexpected value
}
}
你也可以用不只是在做这一个班轮具有getIntentAction
方法蒙混过关,虽然这是一个有点罗嗦:!
String intentAction = getIntent() != null ? getIntent().getAction() : null;
如果你检查'getIntent()getExtras()= NULL '? –
如果你有多个相同的代码片段,你可以使用try catch块作为空指针异常 – miskohut
为什么不使它成为静态的? – k0sh