我正在试验Dagger。现在我不完全明白一切是如何运作的。 所以我写了一个测试项目。匕首简单的例子给出IllegalStateException
这是我的MainActivity:
public class MainActivity extends Activity {
private ObjectGraph mActivityGraph;
@Inject Vehicle car;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mActivityGraph = ObjectGraph.create(new ActivityModule());
mActivityGraph.validate();
mActivityGraph.inject(this);
}
}
这是我ActivityModule:
@Module(
injects =
{
Vehicle.class,
MainActivity.class,
Wheels.class
}
)
public class ActivityModule extends Application{
@Provides Wheels provideWheels()
{
return new Wheels(4,"X12");
}
}
在我的清单我增加了ActivityModule作为名称的应用程序。
这是我的车类:
@Module(
includes = Wheels.class
)
public class Vehicle {
@Inject
Wheels wheels;
private String type;
public Vehicle(String type) {
this.type = type;
}
}
,这是我的车轮:
public class Wheels {
private int inch;
private String brand;
@Inject
public Wheels(int inch, String brand) {
this.inch = inch;
this.brand = brand;
}
}
现在我要做到的是,我在MainActivity是注入其轮汽车。现在我不知道如何创建我的车在MainActivity因为我想创造一辆带有参数作为什么用户在填写字符串
我得到这个:
Error:(8, 8) error: Graph validation failed: No @Module on edu.ida.daggertest.app.Wheels
Error:(20, 8) error: Unknown error java.lang.IllegalStateException thrown by javac in graph validation: Unable to create binding for edu.ida.daggertest.app.Vehicle