我讀過以前的關於此問題的線索,但答案無法解決我的問題。 我有一個BroadcastReceiver這裏面MainActivity一個內部類失敗,出現以下異常:java.lang.RuntimeException:無法在MainActivity中使用BroadcastReceiver內部類實例化接收器
了java.lang.RuntimeException:無法實例化接收機com.tac.kulik.dealsgrabber.MainActivity $ DatabaseBroadcastReceiver:java.lang中.InstantiationException:無法實例化類com.tac.kulik.dealsgrabber.MainActivity $ DatabaseBroadcastReceiver;沒有空構造函數 at android.app.ActivityThread.handleReceiver(ActivityThread.java:2410) at android.app.ActivityThread.access $ 1700(ActivityThread.java:142) at android.app.ActivityThread $ H.handleMessage(ActivityThread。 (android.app.ActivityThread.main(ActivityThread.java:java:1279) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:136) at android.app.ActivityThread.main(ActivityThread.java: 5118) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:794) at com.android.internal.os.ZygoteInit。 main(ZygoteInit.java:610) at dalvik.system.NativeStart.main(Native Method) 導致:java.lang.InstantiationException:無法實例化類com.tac.kulik.dealsgrabber.MainActivity $ DatabaseBroadcastReceiver;沒有空構造函數 at java.lang.Class.newInstanceImpl(Native Method) at java.lang.Class.newInstance(Class.java:1214) at android.app.ActivityThread.handleReceiver(ActivityThread.java:2405) at android.app.ActivityThread.access $ 1700(ActivityThread.java:142) at android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1279) at android.os.Handler.dispatchMessage(Handler.java:102) 在java.lang.reflect.Method.invokeNative(本地方法) 上的android.app.ActivityThread.main(ActivityThread.java:5118) lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:794) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:610) at dalvik.system.NativeStart。主(本地方法)
使BroadcastReceiver靜態不是一個選項,因爲我將無法訪問我需要使用必要的成員變量。
這裏是MainActivity與廣播接收器內部類:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
.
.
.
.
.
try {
AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
Intent dbIntent = new Intent(MainActivity.this, DatabaseBroadcastReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(MainActivity.this, 0, dbIntent, PendingIntent.FLAG_UPDATE_CURRENT);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), alarmManager.INTERVAL_DAY, pendingIntent);
} catch (Exception e) {
e.printStackTrace();
}
}
public class DatabaseBroadcastReceiver extends BroadcastReceiver {
public DatabaseBroadcastReceiver() {
}
@Override
public void onReceive(Context context, Intent intent) {
final Context mContext = context;
.
.
.
.
.
@Override
public void onLoadFinished(Loader<Cursor> arg0, Cursor cursor) {
Log.d(TAG, "onLoadFinished s=" + cursor.getCount());
mDealsAdapter.swapCursor(cursor);
}
@Override
public void onLoaderReset(Loader<Cursor> arg0) {
Log.d(TAG, "onLoaderReset");
mDealsAdapter.swapCursor(null);
}
};
getSupportLoaderManager().initLoader(0, new Bundle(), mCallback);
}
};
AndroidManifest.xml中
<receiver android:name=".MainActivity$DatabaseBroadcastReceiver"/>
請告知任何人。
檢查[this](http://stackoverflow.com/questions/4619049/unable-to-instantiate-receiver-in-broadcastreceiver-sms) –
謝謝,但這不是我的情況。我的內部類已找到,但無法實例化。 –