Kein leerer Konstruktor beim Erstellen eines Dienstes

Ich kämpfe mit diesem Fehler:

08-08 11: 42: 53.179: E / AndroidRuntime (20288): Verursacht durch: java.lang.InstantiationException: kann nicht instanziieren class com.example.localnotificationtest.ReminderService; Kein leerer Konstruktor

  • Wie soll ich Fragments in Google Analytics v4 verfolgen?
  • So stellen Sie verschiedene Themen für aufgeblasenes Layout in einem View Stub ein
  • Android SQLite INSERT
  • Wie man die Contextual Action Bar mit appCompat im Materialdesign anpasst
  • Finden Sie Fragment nach Tag-Name in Container
  • Wie man eine rechteckansicht in showcaseview für listview macht
  • Ich verstehe nicht, warum dieser Fehler auftritt.

    Ich versuche, Benachrichtigung zu bestimmten Zeit erscheinen und nach der Suche nach einer Zeit fand ich diese alte stackoverflow Frage . Ich habe alles versucht, aber mein Code gibt Fehler.

    Bitte helfen Sie mir, dieses Problem zu lösen.

    Hier ist mein MainActivity Code:

    public class MainActivity extends Activity { int mHour, mMinute; ReminderService reminderService; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); reminderService = new ReminderService("ReminderService"); TimePickerDialog dialog = new TimePickerDialog(this, mTimeSetListener, mHour, mMinute, false); dialog.show(); } TimePickerDialog.OnTimeSetListener mTimeSetListener = new OnTimeSetListener() { @Override public void onTimeSet(TimePicker v, int hourOfDay, int minute) { mHour = hourOfDay; mMinute = minute; AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE); Calendar c = Calendar.getInstance(); c.set(Calendar.YEAR, Calendar.YEAR); c.set(Calendar.MONTH, Calendar.MONTH); c.set(Calendar.DAY_OF_MONTH, Calendar.DAY_OF_MONTH); c.set(Calendar.HOUR_OF_DAY, mHour); c.set(Calendar.MINUTE, mMinute); c.set(Calendar.SECOND, 0); long timeInMills = c.getTimeInMillis(); Intent intent = new Intent(MainActivity.this, ReminderService.class); PendingIntent pendingIntent = PendingIntent.getService(MainActivity.this, 0, intent, 0); alarmManager.set(AlarmManager.RTC, timeInMills, pendingIntent); } }; } 

    Und hier ist mein ReminderService Code:

     public class ReminderService extends IntentService { public ReminderService(String name) { super(name); // TODO Auto-generated constructor stub } @Override protected void onHandleIntent(Intent intent) { Intent notificationIntent = new Intent(this, MainActivity.class); PendingIntent contentIntent = PendingIntent.getActivity(this, 1, notificationIntent, PendingIntent.FLAG_CANCEL_CURRENT); NotificationManager nm = (NotificationManager) this.getSystemService(Context.NOTIFICATION_SERVICE); Notification.Builder builder = new Notification.Builder(this); builder.setContentIntent(contentIntent) .setSmallIcon(R.drawable.ic_launcher) .setTicker("Local Notification Ticker") .setWhen(System.currentTimeMillis()) .setAutoCancel(true) .setContentTitle("Local Notification") .setContentText("This is content text."); Notification n = builder.getNotification(); nm.notify(1, n); } } 

    Und hier ist mein manifest.xml:

     <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.localnotificationtest" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="11" android:targetSdkVersion="15" /> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name=".MainActivity" android:label="@string/title_activity_main" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <service android:name="ReminderService"></service> </application> </manifest> 

    Ich weiß nicht, wo ich falsch gehe. Bin ich irgendeinen Code fehlt?

  • Unterschied zwischen shouldoverrideurlloading und shouldinterceptrequest?
  • Textcolor-Selektor funktioniert nicht
  • Erstellen Sie ein anklickbares Bild in einem GridView in Android
  • Android: Abfrage Anrufprotokoll, nachdem es aktualisiert wurde, sobald ein Anruf endet
  • Android-Aktionsleiste checkbare Menüelement funktioniert nicht ordnungsgemäß?
  • HTML 5 Dateieingabe mit iOS und Android
  • 4 Solutions collect form web for “Kein leerer Konstruktor beim Erstellen eines Dienstes”

    Sie müssen einen leeren Konstruktor zu Ihrer Klasse hinzufügen, dh eine, die keine Argumente enthält:

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

    Erläuterung aus der Dokumentation :

    Der name wird verwendet, um den Arbeitsthread zu benennen.

    HINWEIS : Dies gilt nur für Absichtsdienst.

    Wenn Sie Ihren Service als innere Klasse / verschachtelte Klasse deklariert haben, müssen Sie auch die Klasse statisch machen

    Ohne dass du den Fehler bekommst, auch wenn dein Konstruktor richtig ist

    Deklarieren Sie einen Standard-No-Argument-Konstruktor für IntentService

     public class ReminderService extends IntentService { public ReminderService() { super("ReminderService"); } } 

    Sie müssen den Standard-No-Argument-Konstruktor Ihrer ReminderService- Klasse hinzufügen. Dies ist nur implizit hinzugefügt, wenn du keinen eigenen Konstruktor schreibst (was du hast). Siehe hier: http://docs.oracle.com/javase/tutorial/java/javaOO/constructors.html

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.