Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/209.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Roboguice:使用手动注入会导致ConfigurationException(未绑定任何实现)_Android_Dependency Injection_Roboguice_Roboblender - Fatal编程技术网

Android Roboguice:使用手动注入会导致ConfigurationException(未绑定任何实现)

Android Roboguice:使用手动注入会导致ConfigurationException(未绑定任何实现),android,dependency-injection,roboguice,roboblender,Android,Dependency Injection,Roboguice,Roboblender,我发现Roboguice在使用手动实例解析时存在问题。一旦我关闭注释数据库,它就会工作。否则我会得到一个例外: No implementation for com.kmsoftware.roboguicetest.SomeInterface was bound. 我是做错了什么,还是只是一个机器人分子/机器人贷款人的错误 代码如下所示: MainActivity.java public class MainActivity extends RoboActionBarActivity { //

我发现Roboguice在使用手动实例解析时存在问题。一旦我关闭注释数据库,它就会工作。否则我会得到一个例外:

No implementation for com.kmsoftware.roboguicetest.SomeInterface was bound.
我是做错了什么,还是只是一个机器人分子/机器人贷款人的错误

代码如下所示:

MainActivity.java

public class MainActivity extends RoboActionBarActivity {

//    static {
//        RoboGuice.setUseAnnotationDatabases(false);
//    }

    @Inject
    FragmentManager fragmentManager;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        TextView tv = (TextView) findViewById(R.id.activityMainLabel);

        SomeInterface instance = RoboGuice.getInjector(this).getInstance(SomeInterface.class);

        tv.setText(String.valueOf(instance.getValue()));
    }

    ...
}
public class RoboModule extends AbstractModule {
    @Override
    protected void configure() {

        bind(SomeInterface.class).to(ConcreteClass.class);
    }
}
public interface SomeInterface {
    int getValue();
}
public class ConcreteClass implements SomeInterface {
    @Override
    public int getValue() {
        return 7;
    }
}
RoboModule.java

public class MainActivity extends RoboActionBarActivity {

//    static {
//        RoboGuice.setUseAnnotationDatabases(false);
//    }

    @Inject
    FragmentManager fragmentManager;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        TextView tv = (TextView) findViewById(R.id.activityMainLabel);

        SomeInterface instance = RoboGuice.getInjector(this).getInstance(SomeInterface.class);

        tv.setText(String.valueOf(instance.getValue()));
    }

    ...
}
public class RoboModule extends AbstractModule {
    @Override
    protected void configure() {

        bind(SomeInterface.class).to(ConcreteClass.class);
    }
}
public interface SomeInterface {
    int getValue();
}
public class ConcreteClass implements SomeInterface {
    @Override
    public int getValue() {
        return 7;
    }
}
SomeInterface.java

public class MainActivity extends RoboActionBarActivity {

//    static {
//        RoboGuice.setUseAnnotationDatabases(false);
//    }

    @Inject
    FragmentManager fragmentManager;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        TextView tv = (TextView) findViewById(R.id.activityMainLabel);

        SomeInterface instance = RoboGuice.getInjector(this).getInstance(SomeInterface.class);

        tv.setText(String.valueOf(instance.getValue()));
    }

    ...
}
public class RoboModule extends AbstractModule {
    @Override
    protected void configure() {

        bind(SomeInterface.class).to(ConcreteClass.class);
    }
}
public interface SomeInterface {
    int getValue();
}
public class ConcreteClass implements SomeInterface {
    @Override
    public int getValue() {
        return 7;
    }
}
ConcreteClass.java

public class MainActivity extends RoboActionBarActivity {

//    static {
//        RoboGuice.setUseAnnotationDatabases(false);
//    }

    @Inject
    FragmentManager fragmentManager;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        TextView tv = (TextView) findViewById(R.id.activityMainLabel);

        SomeInterface instance = RoboGuice.getInjector(this).getInstance(SomeInterface.class);

        tv.setText(String.valueOf(instance.getValue()));
    }

    ...
}
public class RoboModule extends AbstractModule {
    @Override
    protected void configure() {

        bind(SomeInterface.class).to(ConcreteClass.class);
    }
}
public interface SomeInterface {
    int getValue();
}
public class ConcreteClass implements SomeInterface {
    @Override
    public int getValue() {
        return 7;
    }
}

这是Roboguice/Roboblender中的一个bug。有一个修复,它还没有被提交,我还没有设法使它工作。我现在不使用注释数据库。在Roboguice 4.0中,roboblender是开箱即用的。