Jam*_*ame 1 android bundle android-intent
我的图表如下
Activity 1 --send data--> Service1
^
|
Open app--------------------
^
|
Activity 2------------------
Run Code Online (Sandbox Code Playgroud)
这意味着活动1将数据发送到服务1.服务1是运行后台服务,返回onStartCommand()为START_STICKY.目前,我正在使用putExtra()函数来交换数据.在服务中我将获得以下步骤的以下数据:
在 Activity 1
Intent start_service = new Intent(getContext(), ConnectService.class);
start_service.putExtra("data", "123");
getContext().startService(start_service);
Run Code Online (Sandbox Code Playgroud)
在onStartCommand()中 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";
Run Code Online (Sandbox Code Playgroud)
我用这个hasExtra函数检查是否data设置了.在我的目的中,案例1是服务1可以从中接收数据Activity 1.在案例2中,如果我们不从活动1开始,例如,当我清理所有正在运行的应用程序时,手机将自动打开服务1 START_STICKY,因为服务1将数据设置为等于"0".因此,我的问题是从第二种情况,应用程序崩溃,因为它无法检查Extra存在与否.
引起:java.lang.NullPointerException:尝试在空对象引用上调用虚方法'boolean android.content.Intent.hasExtra(java.lang.String)'
我该如何解决这个问题?谢谢大家
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";
Run Code Online (Sandbox Code Playgroud)
试试这个,注意条件的变化
| 归档时间: |
|
| 查看次数: |
2026 次 |
| 最近记录: |