我有一个库,该库具有在项目模块中扩展的抽象BaseActivity和BaseApplication。库模块中存在ApplicationModule和ApplicationComponent,当我尝试将对象扩展到扩展BaseActivity的MainActivity时,出现空指针异常。
这在库模块中
@Component(modules = ApplicationModule.class)
@Singleton
public interface ApplicationComponent {
void inject(BaseActivity baseActivity);
@Component.Builder
interface Builder {
@BindsInstance
Builder application(Application application);
ApplicationComponent build();
}
}
也在库模块中
@Module
public class ApplicationModule {
@Singleton
@Provides
User provideUser() {
return new User("Unknown","abc@xyz.com");
}
}
图书馆申请
public abstract class BaseApplication extends Application {
private ApplicationComponent mApplicationComponent;
@Override
public void onCreate() {
super.onCreate();
mApplicationComponent = DaggerApplicationComponent
.builder()
.application(this)
.build();
}
public ApplicationComponent getApplicationComponent() {
return mApplicationComponent;
}
}
public abstract class BaseActivity extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
((BaseApplication) getApplication()).getApplicationComponent().inject(this);
}
项目活动
public class MainActivity extends BaseActivity {
@Inject
User user;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
user.setName("New User");
System.out.println("MainActivity user: " + user.getName() + ", email: " + user.getEmail());
}
}
当我尝试将其注入扩展BaseActivity的MainActivity时,用户返回null。当我将用户注入BaseActivity时,效果很好。