BroadcastReceiver: Klasse kann nicht instanziiert werden; kein leerer Konstruktor
Habe ich die innere Klasse als broadcast-Empfänger:
public class ManualBacklightReceiver extends BroadcastReceiver {
public static final String ACTION_MANUAL_BACKLIGHT = "com.android.systemui.statusbar.powerwidget.MANUAL_BACKLIGHT";
public ManualBacklightReceiver() {
}
@Override
public void onReceive(Context context, Intent intent) {
Log.d("ManualBacklightReceiver", intent.getAction());
}
};
AndroidManifest:
<receiver android:name=".statusbar.powerwidget.PowerWidgetGrid$ManualBacklightReceiver">
<intent-filter>
<action android:name="com.android.systemui.statusbar.powerwidget.MANUAL_BACKLIGHT"/>
</intent-filter>
</receiver>
Und wenn ich senden Sie die Absicht, mit diesem code:
Intent intent = new Intent();
intent.setAction("com.android.systemui.statusbar.powerwidget.MANUAL_BACKLIGHT");
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
mContext.sendBroadcast(intent);
Bekomme ich diese Ausnahmen:
java.lang.RuntimeException: Unable to instantiate receiver com.android.systemui.statusbar.powerwidget.PowerWidgetGrid$ManualBacklightReceiver:
java.lang.InstantiationException: can't instantiate class com.android.systemui.statusbar.powerwidget.PowerWidgetGrid$ManualBacklightReceiver; no empty constructor
Caused by: java.lang.InstantiationException: can't instantiate class com.android.systemui.statusbar.powerwidget.PowerWidgetGrid$ManualBacklightReceiver; no empty constructor
Aber ich habe einen leeren Konstruktor! Warum funktioniert es nicht?
InformationsquelleAutor der Frage arts777 | 2012-04-24
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie erklären, Ihre innere Klasse als statisch. Ansonsten eine innere Klasse ist assoziiert mit einer Instanz Ihrer äußeren Klasse.
Check-out die Java-Geschachtelte Klassen-tutorial für details. Hier ist ein snippet:
und:
InformationsquelleAutor der Antwort jarrad