Dagger2Simple/order运行后点击“新增”报错
报错信息: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.tangpj.order/com.tangpj.order.ui.addedit.AddEditDishActivity}: java.lang.NullPointerException: Cannot return null from a non-@Nullable @Provides method at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2946) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3081) at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78) at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1831) at android.os.Handler.dispatchMessage(Handler.java:106) at android.os.Looper.loop(Looper.java:201) at android.app.ActivityThread.main(ActivityThread.java:6810) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:873) Caused by: java.lang.NullPointerException: Cannot return null from a non-@Nullable @Provides method at dagger.internal.Preconditions.checkNotNull(Preconditions.java:48) at com.tangpj.order.ui.addedit.AddEditModules_ProvidesDishIdFactory.proxyProvidesDishId(AddEditModules_ProvidesDishIdFactory.java:30) at com.tangpj.order.ui.addedit.AddEditModules_ProvidesDishIdFactory.provideInstance(AddEditModules_ProvidesDishIdFactory.java:21) at com.tangpj.order.ui.addedit.AddEditModules_ProvidesDishIdFactory.get(AddEditModules_ProvidesDishIdFactory.java:17) at com.tangpj.order.ui.addedit.AddEditModules_ProvidesDishIdFactory.get(AddEditModules_ProvidesDishIdFactory.java:8) at dagger.internal.DoubleCheck.get(DoubleCheck.java:47) at com.tangpj.order.di.DaggerOrderAppComponent$AddEditDishActivitySubcomponentImpl.injectAddEditDishFragment(DaggerOrderAppComponent.java:465) at com.tangpj.order.di.DaggerOrderAppComponent$AddEditDishActivitySubcomponentImpl.getAddEditDishFragment(DaggerOrderAppComponent.java:426) at com.tangpj.order.di.DaggerOrderAppComponent$AddEditDishActivitySubcomponentImpl.injectAddEditDishActivity(DaggerOrderAppComponent.java:477) at com.tangpj.order.di.DaggerOrderAppComponent$AddEditDishActivitySubcomponentImpl.inject(DaggerOrderAppComponent.java:447) at com.tangpj.order.di.DaggerOrderAppComponent$AddEditDishActivitySubcomponentImpl.inject(DaggerOrderAppComponent.java:385) at dagger.android.DispatchingAndroidInjector.maybeInject(DispatchingAndroidInjector.java:109) at dagger.android.DispatchingAndroidInjector.inject(DispatchingAndroidInjector.java:130) at dagger.android.AndroidInjection.inject(AndroidInjection.java:59) at dagger.android.support.DaggerAppCompatActivity.onCreate(DaggerAppCompatActivity.java:43) at com.tangpj.order.ui.addedit.AddEditDishActivity.onCreate(AddEditDishActivity.java:30) at android.app.Activity.performCreate(Activity.java:7224) at android.app.Activity.performCreate(Activity.java:7213) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1272) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2926) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3081) at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78) at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1831) at android.os.Handler.dispatchMessage(Handler.java:106) at android.os.Looper.loop(Looper.java:201) at android.app.ActivityThread.main(ActivityThread.java:6810) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:873)
@Module abstract public class AddEditModules {
@Provides
@ActivityScoped
public static String providesDishId(AddEditDishActivity activity){
// add check if null
String stringExtra = activity.getIntent().getStringExtra(AddEditDishFragment.EDIT_DISH_ID);
if (TextUtils.isEmpty(stringExtra)) {
return "";
}
return stringExtra;
}
...
}