В моем коде есть внутренний класс, который расширяет BroadcastReceiver
.
И я добавил следующую строку в AndroidManifest.xml
:
<receiver android:name="OuterClass$InnerClass android:enabled="true"/>
Но я получаю следующую ошибку:
не удалось создать экземпляр получателя org.example.test.OuterClass $ InnerClass
Как я могу решить эту проблему?
Нотация $
обозначает не внутренний класс, а статический вложенный класс. Таким образом, теоретически есть 2 способа решить эту конкретную проблему:
Обозначить его как настоящий внутренний класс, т.е. OuterClass.InnerClass
(хотя не уверен, что Android съест это с момента создания экземпляра внутреннего класса довольно сложнее, чем просто сделать Class#newInstance()
.
Вместо этого объявите класс статическим вложенным классом, т.е. добавьте static
к классу InnerClass {}
. Таким образом, OuterClass$InnerClass
должен иметь возможность создать из него новый экземпляр.
Если это не решает проблему, то, видимо, Android просто не ест это Тогда я бы просто извлек его в отдельный класс
Может быть, не хватает только точки и закрывающей кавычки? Например
<receiver android:name=".OuterClass$InnerClass" android:enabled="true"/>