在将值从Activity传递给服务时获取空指针异常

时间:2012-08-16 08:03:58

标签: android service android-intent

在Activity中,我已经传递了像这样的值paramVal

 Intent srv = new Intent(this, TestService.class);
    startService(srv);

     //Intent intent =new Intent("com.example.firstapplication.STARTACTIVITY"); 
     //intent.putExtra("myFirstKey", paramVal); 

    //intent.putExtra("myFirstKey", paramVal); 

    Bundle bundle = new Bundle();
    bundle.putCharSequence("myFirstKey", paramVal);
    intent.putExtras(bundle);

并且在服务中我正在检索这样的值

 @Override
  public void onStart(Intent intent, int startId) {
      // TODO Auto-generated method stub
      super.onStart(intent, startId);

      Bundle bundle = intent.getExtras();
      data = (String) bundle.getCharSequence("myFirstKey");

      System.out.println("data checking"+data);
     }

但我得到了行

的空指针异常
data = (String) bundle.getCharSequence("myFirstKey");

在服务中

我是否应该在某处调用onstart方法。请告诉我问题在哪里?

3 个答案:

答案 0 :(得分:2)

在您的活动中:

Intent lIntent = new Intent(this, TestService.class);
lIntent.putExtra("myFirstKey", <your String param here>);
startService(lIntent);

在您的服务中:

String lDataString = intent.getStringExtra("myFirstKey");

作为旁注:

  • 请覆盖您服务中的onStartCommand(),因为不推荐使用onStart()
  • 扩展Service类时不需要调用super.onStartCommand()(或者super.onStart())

答案 1 :(得分:0)

你在传递额外内容之前就开始了这项服务......

答案 2 :(得分:0)

它可能有效,你正在改变指令的顺序。在意图中插入值之前,服务正在启动。

Intent srv = new Intent(this, TestService.class);
Bundle bundle = new Bundle();
    bundle.putCharSequence("myFirstKey", paramVal);
    intent.putExtras(bundle);
startService(srv);