Java 如何通过意图将数据从活动发送到服务-空指针问题
我正在尝试将信息从活动传递到服务Java 如何通过意图将数据从活动发送到服务-空指针问题,java,android,android-intent,service,nullpointerexception,Java,Android,Android Intent,Service,Nullpointerexception,我正在尝试将信息从活动传递到服务 @Override public int onStartCommand(Intent intent, int flags, int startId) { //String totalTimeMilli182 = intent.getStringExtra("totalTimeMilli"); //String cdTimeMilli182 = intent.getStringExtra("cdlTimeMilli"); //Strin
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
//String totalTimeMilli182 = intent.getStringExtra("totalTimeMilli");
//String cdTimeMilli182 = intent.getStringExtra("cdlTimeMilli");
//String strobeDIVstring182 = intent.getStringExtra("strobeDIV");
Bundle b=intent.getExtras();
String totalTimeMilli182 = b.getString("totalTimeMilli");
String cdTimeMilli182 = b.getString("cdlTimeMilli");
String strobeDIVstring182 = b.getString("strobeDIV");
fooTimeTotal = Integer.parseInt(totalTimeMilli182);
fooCDTotal = Integer.parseInt(cdTimeMilli182);
strobeDIV = Integer.parseInt(strobeDIVstring182);
strobeTimer182();
return START_STICKY;
}
我在logcat中得到一个空指针异常。我不熟悉这一点,但我记得读过,因为intent.getStringExtra在服务中为null。我不确定情况是否如此。谁能告诉我真正的问题是什么,因为我什么都试过了。我们不能使用Bundle extras=this.getIntent().getExtras();那么,我们还能如何解决这个问题呢
下面是我在活动中的内容
flashButton1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
strobeDIV++;
try {
Intent i1 = new Intent(LeLauncher.this, FlashServ.class);
Bundle b = new Bundle();
totalMS = String.valueOf(totalMilli);
cdMS = String.valueOf(totalMilli);
strobeDIVString =String.valueOf(strobeDIV);
b.putString("totalTimeMilli", totalMS);
b.putString("cdTimeMilli", cdMS);
b.putString("strobeDIV", strobeDIVString);
i1.putExtra("totalTimeMilli", totalMilli);
i1.putExtra("cdTimeMilli", cdMilli);
i1.putExtra("strobeDIV", strobeDIV);
i1.putExtras(b);
LeLauncher.this.startService(i1);
flashText1.setText("Seconds Left: 1");
} catch (Exception e1) {
e1.printStackTrace();
}
}
});
下面是我在这项服务中所拥有的
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
//String totalTimeMilli182 = intent.getStringExtra("totalTimeMilli");
//String cdTimeMilli182 = intent.getStringExtra("cdlTimeMilli");
//String strobeDIVstring182 = intent.getStringExtra("strobeDIV");
Bundle b=intent.getExtras();
String totalTimeMilli182 = b.getString("totalTimeMilli");
String cdTimeMilli182 = b.getString("cdlTimeMilli");
String strobeDIVstring182 = b.getString("strobeDIV");
fooTimeTotal = Integer.parseInt(totalTimeMilli182);
fooCDTotal = Integer.parseInt(cdTimeMilli182);
strobeDIV = Integer.parseInt(strobeDIVstring182);
strobeTimer182();
return START_STICKY;
}
activity.java
Intent intent=new Intent(ServicesActivity.this,FileManagerRequest.class);
Bundle b=new Bundle()
b.putStringArray("Array", your_array)
intent.putExtras(b);
startService(intent);
in you service
service.java
public void onStart(Intent intent, int startid){
super.onStart(intent, startid);
Bundle b=intent.getExtras();
String[] Array = b.getStringArray("Array");
}
尝试将
getStringExtra
替换为Bundle…=getExtras()
然后通过getString(“key”,defaultValue)”检索它