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");

補足として:

  • onStart() は廃止されたため、サービスで onStartCommand() をオーバーライドしてください
  • Service クラスを拡張するときに、super.onStartCommand() (または super.onStart()) を呼び出す必要はありません。
于 2012-08-16T08:18:16.180 に答える
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 に答える
0

エクストラを渡す前にサービスを開始しています...

于 2012-08-16T08:06:12.960 に答える