IntentService错误:无默认构造函数

时间:2017-03-30 21:26:17

标签: android

我是Android的新手,我正在尝试使用IntentService,错误是它没有默认构造函数 我尝试重启android工作室它不起作用。

package com.example.hitesh.kuchbhi;

import android.app.IntentService;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.bluetooth.BluetoothAdapter;
import android.content.Context;
import android.content.Intent;
import android.support.v4.app.TaskStackBuilder;
import android.support.v7.app.NotificationCompat;

import java.util.TreeSet;

public class DisplayNotification extends IntentService {
    public DisplayNotification(String name) {
        super("DisplayNotification");
    }

    @Override
    protected void onHandleIntent(Intent intent) {
// my code which even after deleting gives the same error
    }

log cat error

E/AndroidRuntime: FATAL EXCEPTION: main
                  Process: com.example.hitesh.kuchbhi, PID: 28899
                  java.lang.RuntimeException: Unable to instantiate service com.example.hitesh.kuchbhi.DisplayNotification: java.lang.InstantiationException: class com.example.hitesh.kuchbhi.DisplayNotification has no zero argument constructor
                      at android.app.ActivityThread.handleCreateService(ActivityThread.java:2728)
                      at android.app.ActivityThread.access$1800(ActivityThread.java:144)
                      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1368)
                      at android.os.Handler.dispatchMessage(Handler.java:102)
                      at android.os.Looper.loop(Looper.java:135)
                      at android.app.ActivityThread.main(ActivityThread.java:5233)
                      at java.lang.reflect.Method.invoke(Native Method)
                      at java.lang.reflect.Method.invoke(Method.java:372)
                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:898)
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:693)

AndroidManifest文件截图 enter image description here

6 个答案:

答案 0 :(得分:98)

只需添加默认构造函数

即可
public DisplayNotification() {
    super("DisplayNotification");
}

这意味着没有参数的构造函数

答案 1 :(得分:4)

请参阅android开发人员指南,了解如何创建后台服务https://developer.android.com/training/run-background-service/create-service.html

从我收集的内容中,您需要做的就是通过创建一个扩展IntentService的类来创建intent服务,并在其中定义一个覆盖onHandleIntent()的方法。

您需要删除为DisplayNotification类定义的构造函数,或者添加默认构造函数,如下所示:

public DisplayNotification() {
    super("DisplayNotification");
}

答案 2 :(得分:1)

似乎你需要一个无参数构造函数,如下所示:

public DisplayNotification() { 
    super("DisplayNotification");
}

如果有帮助,请告诉我。

答案 3 :(得分:0)

Intent服务需要一个参数构造函数,因此我们需要为no参数构造函数提供parms super

示例

没有具有param super的Param构造函数

public DisplayNotification() {
    super("DisplayNotification");
}

具有parma super的Param构造函数

public DisplayNotification(String name) {
    super(name);
}

答案 4 :(得分:0)

只需添加另一个构造函数:

public DisplayNotification() {
    this("DisplayNotification");
}

答案 5 :(得分:0)

@jht

  1. 另一种方法->默认构造函数由参数化参数提供 **public IntentService (String name)**,其中使用字符串名称来命名工作线程,

      public DisplayNotification(String name) {
      this(name);
    }