java - 如何通过 Intent 从 Activity 向服务发送数据 - 空指针问题

标签 java android android-intent service nullpointerexception

我正在尝试将信息从 Activity 传递到服务。

我在 logcat 中遇到空指针异常。我对此很陌生,但我记得读过,这是因为服务中的intent.getStringExtra为空。我不确定情况是否如此。有人可以告诉我实际的问题是什么,因为我已经尝试了一切。我们不能使用 Bundle extras = this.getIntent().getExtras();那么我们还能如何解决这个问题呢?

下面是我在 Activity 中的内容

         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

服务.java

    public void onStart(Intent intent, int startid){
    super.onStart(intent, startid);
    Bundle b=intent.getExtras();
    String[] Array = b.getStringArray("Array");
}

关于java - 如何通过 Intent 从 Activity 向服务发送数据 - 空指针问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24455922/

相关文章:

java - 如何从firebase数据库检索数据并将所有数据传递给sms

java - 如何自动更改每天的文本查看消息?

Android - 带有可滚动 ListView 手动刷新的小部件

android - 在 Dagger 2 中异步构建依赖关系图

java - 启动 Activity 别名的 Intent

java - 我在哪里放置 Intent 代码?

java - 在java应用程序中将单词映射到其同义词

java - 注入(inject)构造函数、单元测试和最佳实践

安卓源?

android - 显式 Intent 、隐式 Intent 和广播