0

在活动中,我已经像这样传递了一个值 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 方法。请告诉我问题出在哪里??

4

3 回答 3

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() )
于 2012-08-16T08:18:16.180 回答
0

您在通过附加功能之前启动服务......

于 2012-08-16T08:06:12.960 回答
0

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

Intent srv = new Intent(this, TestService.class);
Bundle bundle = new Bundle();
    bundle.putCharSequence("myFirstKey", paramVal);
    intent.putExtras(bundle);
startService(srv);
于 2012-08-29T11:17:43.577 回答