Guice가 삽입 한 공장을 사용하는 데 문제가 있습니다.안드로이드에 Guice가 주입 한 공장을 사용하는 방법?
나는이 좋은 기사 http://google-guice.googlecode.com/svn/trunk/javadoc/com/google/inject/assistedinject/FactoryModuleBuilder.html을 읽었지만 여전히 뭔가를 이해하지 못합니다. 나는. 모듈이 사용 된 적이없는 이유는 무엇입니까? 처럼 Guice.createInjector() 메서드입니다.
나는이 간단한 응용 프로그램을 시도했는데 Guidance가 내가 필요로하는 Factory를 해결할 수 없기 때문에 NullPointerException이 있습니다.
public interface FooInterface
{
String getString();
}
public class Foo implements FooInterface {
String bar;
@Inject
Foo(@Assisted String bar)
{
Log.i("main", "Foo constructor");
this.bar = bar;
}
public String getString(){
Log.i("main", "getString");
return this.bar;
}
}
public interface FooFactory
{
FooInterface create(String bar);
}
다음은 구성 모듈
public class ConfigurationModule extends AbstractModule
{
@Override
protected void configure()
{
Log.i("main", "Configuration module");
install(new FactoryModuleBuilder().implement(FooInterface.class, Foo.class).build(FooFactory.class));
}
}
그리고 내 활동 내가 로그에서, 푸 생성자가 호출되지 않습니다 볼 수 있듯이
public class MyActivity extends Activity implements View.OnClickListener
{
@Inject private FooFactory fooFactory;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Log.i("main", "onCreate");
Button btn = (Button) findViewById(R.id.btn);
btn.setOnClickListener(this);
}
@Override
public void onClick(View view)
{
Log.i("main", "onClick");
FooInterface foo = this.fooFactory.create("foo name");
String str = foo.getString();
Toast.makeText(getApplicationContext(), "String is: "+ str, Toast.LENGTH_SHORT);
}
}
입니다. ConfigurationModule과 동일합니다. 이 모듈을 사용하는 곳을 볼 수 없습니다. 어떤 아이디어? 어쩌면 내가 뭔가를 놓친거야?
여기서 ConfigurationModule을 설치하고 있습니까? MyActivity 활동은 어떻게 작성하고 있습니까? (게시 한 코드가 올바르게 보이지만 ConfigurationModule을 기반으로 인젝터를 만들고 해당 인스턴스에서 MyActivity의 인스턴스를 가져와야하는지 확인해야합니다. –
그게 어떤 예제에서 찾지 못했던 문제입니다. 이 모듈을 사용해야합니까? 그래서 기본적으로 나는 그것을 전혀 설치하지 않으며 그것을하는 방법을 모른다. 활동을 생성하지 않습니다. Android는 않습니다. 그것은 응용 프로그램과 함께 시작되는 유일한 활동입니다. –
Android에서 vanilla Guice를 사용할 수 있다고 생각하지 않습니다. 다음을 살펴 보셨습니까? https://github.com/roboguice/roboguice/wiki? – condit