如何检查 putExtra 是否存在?
How to check if the putExtra exist?
我有如下图
Activity 1 --send data--> Service1
^
|
Open app--------------------
^
|
Activity 2------------------
表示activity1会将数据发送给一个Service 1。Service 1是一个运行后台服务,return在onStartCommand()
是START_STICKY
。目前,我正在使用 putExtra()
函数来交换数据。在服务中,我将按以下步骤获取额外数据:
在Activity 1
Intent start_service = new Intent(getContext(), ConnectService.class);
start_service.putExtra("data", "123");
getContext().startService(start_service);
在 Service 1
的 onStartCommand() 中
String data=null;
if(intent.hasExtra("data")){
Bundle bundle = intent.getExtras();
if(!bundle.getString("data").equals(null)){
data= bundle.getString("data");
}
}
else
data="0";
我使用了hasExtra
函数来检查是否设置了data
。在我的目的中,案例 1 是服务 1 可以从 Activity 1
接收数据。在案例2中,如果我们不从Activity 1开始,例如,当我清理所有运行应用程序时,phone将自动打开服务1,因为START_STICKY
,服务 1 将设置数据等于“0”。因此,我的问题来自第二种情况,应用程序崩溃是因为它无法检查 Extra 是否存在。
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.content.Intent.hasExtra(java.lang.String)' on a null object reference
我该如何解决这个问题?谢谢大家
String data=null;
if(getIntent()!=null && getIntent().getExtras()!=null){
Bundle bundle = getIntent().getExtras();
if(!bundle.getString("data").equals(null)){
data= bundle.getString("data");
}
}
else
data="0";
试试这个,注意 if 条件的变化
在这一步 intent
可能为空。此外,您的代码会导致数据可能为空值。相反,您可以执行以下操作:
String data = null;
if (intent != null) {
data = intent.getStringExtra("data");
}
if (data == null) {
data = "0";
}
此外,您不应使用 equals()
来检查空值。始终使用 == null
。
我有如下图
Activity 1 --send data--> Service1
^
|
Open app--------------------
^
|
Activity 2------------------
表示activity1会将数据发送给一个Service 1。Service 1是一个运行后台服务,return在onStartCommand()
是START_STICKY
。目前,我正在使用 putExtra()
函数来交换数据。在服务中,我将按以下步骤获取额外数据:
在Activity 1
Intent start_service = new Intent(getContext(), ConnectService.class);
start_service.putExtra("data", "123");
getContext().startService(start_service);
在 Service 1
String data=null;
if(intent.hasExtra("data")){
Bundle bundle = intent.getExtras();
if(!bundle.getString("data").equals(null)){
data= bundle.getString("data");
}
}
else
data="0";
我使用了hasExtra
函数来检查是否设置了data
。在我的目的中,案例 1 是服务 1 可以从 Activity 1
接收数据。在案例2中,如果我们不从Activity 1开始,例如,当我清理所有运行应用程序时,phone将自动打开服务1,因为START_STICKY
,服务 1 将设置数据等于“0”。因此,我的问题来自第二种情况,应用程序崩溃是因为它无法检查 Extra 是否存在。
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.content.Intent.hasExtra(java.lang.String)' on a null object reference
我该如何解决这个问题?谢谢大家
String data=null;
if(getIntent()!=null && getIntent().getExtras()!=null){
Bundle bundle = getIntent().getExtras();
if(!bundle.getString("data").equals(null)){
data= bundle.getString("data");
}
}
else
data="0";
试试这个,注意 if 条件的变化
在这一步 intent
可能为空。此外,您的代码会导致数据可能为空值。相反,您可以执行以下操作:
String data = null;
if (intent != null) {
data = intent.getStringExtra("data");
}
if (data == null) {
data = "0";
}
此外,您不应使用 equals()
来检查空值。始终使用 == null
。