Android-advanced-blueprint icon indicating copy to clipboard operation
Android-advanced-blueprint copied to clipboard

Dagger2Simple/order运行后点击“新增”报错

Open shenbh opened this issue 5 years ago • 1 comments

报错信息: 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) 

shenbh avatar May 25 '20 09:05 shenbh

@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;
}

...

}

thewyp avatar Feb 21 '21 10:02 thewyp