我是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)
答案 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
另一种方法->默认构造函数由参数化参数提供
**public IntentService (String name)**
,其中使用字符串名称来命名工作线程,
public DisplayNotification(String name) {
this(name);
}