我正在試驗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