Articles of roboguice

roboguice如何注入自定义类

我现在正在使用roboguice,我们可以使用注释来获取类注入 @InjectView(R.id.list)ListView x @inject表示法有效,因为我从RoboActivity或任何Robo类扩展 我的问题是,如果我想注入一个自定义类,称为 public class CustomUtilManager { } 我希望能够在RoboActivity中注入它 @Inject CustomUtilMananger 我该怎么做? 我的第二个问题是,如果我有一个类,那么它不是任何Robo *类的子类 说 public class MyOwnClass { } 我如何获得注入器并注入另一个注入类,例如CustomUtilManager 即我怎么说 public class MyOwnClass { @Inject CustomUtilManager customUtilManager; }

用Jackson反序列化genericstypes

我正在努力创建一个使用Jackson来反序列化POJO的课程。 看起来像这样…… public class DeserialiserImp implements Deserialiser { protected ObjectMapper objectMapper = new ObjectMapper(); @Override public T get(String content, Class clazz) throws IOException { return (T) objectMapper.readValue(content, clazz); } @Override public List getList(String content, Class clazz) throws IOException { return objectMapper.readValue(content, TypeFactory.collectionType(ArrayList.class, clazz)); } } 我有2个关于此实现的问题。 第一个是我将类types传递给方法,因此objectmapper知道应该反序列化的types。 使用generics有更好的方法吗? 同样在get方法中,我将一个从objectMapper返回的对象转换为T.这似乎是特别讨厌的方式,因为我必须在这里强制转换T然后我还必须从调用它的方法中转换对象types。 我在这个项目中使用Roboguice,如果我可以通过注入更改types然后注释我需要它返回的Generictypes的对象,那将会很好。 我读到了关于TypeLiteral并想知道它是否可以解决这个问题?

带有@Inject注释的ProGuard和RoboGuice问题

我在优化我的Android应用程序时遇到了一些proguard问题。 似乎对注释类(@ com.google.inject.Inject)做了一些事情,Dalvik / Harmony在运行时不满意。 java.lang.annotation.IncompleteAnnotationException:注释com.google.inject.Inject的元素可选元素不完整 com.google.inject.Inject看起来像这样(Guice的一部分): @Target(value={ElementType.METHOD, ElementType.CONSTRUCTOR, ElementType.FIELD}) @Retention(value=java.lang.annotation.RetentionPolicy.RUNTIME) @Documented public abstract @interface com.google.inject.Inject extends Annotation { public abstract boolean optional() default false; } 这是发布失败: 04-07 09:48:00.864: ERROR/AndroidRuntime(9384): FATAL EXCEPTION: main 04-07 09:48:00.864: ERROR/AndroidRuntime(9384): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.bitgrind.wtb/com.bitgrind.wtb.activity.Main}: com.google.inject.bq: com.google.inject.bq: java.lang.annotation.IncompleteAnnotationException: The element optional is not complete for the annotation com.google.inject.Inject […]

使用RoboGuice 2.0的Android应用程序 – 如何使用Application上下文注入Singleton

我有一个GameStateManager单例,我想让我的所有活动都可用。 特别是我希望它使用Application Context而不是单独的Activity Context来监听使用EventManager触发的事件。 GameStateManager标有单例注释 我试着在Application.OnCreate期间注入GameStateManager(抱歉,从内存中输入以下代码片段,没有复制和粘贴,所以可能不正确) public void OnCreate(){ GameStateManager gameStateManager = RoboGuice.InjectMembers(this.getApplicationContext(), new GameStateManager()) } 我认为GameStateManager的实例将使用应用程序上下文构造,因为它被注释为单例,因此稍后可以使用应用程序上下文。 我注意到的是,当我将GameStateManager注入到一个活动中时,我实际上得到了一个与活动上下文相关联的新单例。 所以本质上我有2个单身:) 关于如何拥有一个连接到Application上下文的真正“单例”的任何想法? 谢谢!

将RoboFragment与FragmentManager一起使用

我一直在尝试使用RoboGuice和碎片而没有运气。 我有一个扩展RoboFragment的片段,以及一个扩展RoboFragment的活动,但似乎在RoboActivity ,方法getFragmentManager与RoboFragment不兼容。 看起来RoboFragment扩展了android.support.v4.app.Fragmentment但getFragmentManager需要android.app.Fragment 。 这有什么用?

具有Roboguice依赖性的Gradle和多个项目

我正在尝试迁移旧的IntelliJ项目以使用gradle。 但是,在dx步骤期间,assembleDebug失败: java.lang.IllegalArgumentException: already added: Lcom/google/inject/AbstractModule; at com.android.dx.dex.file.ClassDefsSection.add(ClassDefsSection.java:123) at com.android.dx.dex.file.DexFile.add(DexFile.java:163) at com.android.dx.command.dexer.Main.processClass(Main.java:490) at com.android.dx.command.dexer.Main.processFileBytes(Main.java:459) at com.android.dx.command.dexer.Main.access$400(Main.java:67) at com.android.dx.command.dexer.Main$1.processFileBytes(Main.java:398) at com.android.dx.cf.direct.ClassPathOpener.processArchive(ClassPathOpener.java:245) at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:131) at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:109) at com.android.dx.command.dexer.Main.processOne(Main.java:422) at com.android.dx.command.dexer.Main.processAllFiles(Main.java:333) at com.android.dx.command.dexer.Main.run(Main.java:209) at com.android.dx.command.dexer.Main.main(Main.java:174) at com.android.dx.command.Main.main(Main.java:91) 我的项目分为两个子项目:主项目和图书馆项目。 这两个项目都将Roboguice和Guice作为依赖项。 我尝试了Xav建议的解决方法,将支持库包含在本答案中提到的多个项目中。 鉴于roboguice / guice都是从maven中心拾取的,因此甚至可能不需要解决方法。 我创建了一个虚拟库项目,这是唯一依赖roboguice / guice的项目。 我做到了这一点,以便我的主项目和(真正的)图书馆项目都依赖于这个虚拟项目。 但是,我得到了同样的错误。 怎么解决这个问题? 根目录中的settings.gradle : include ‘MainApp’ include ‘library’ include ‘common-library’ 根目录中的build.gradle […]

RoboFragment中的InjectView

我想从xml布局注入一些视图到RoboFragment但不幸的是我得到了Nullpointerexception。 由于RoboGuice(除了是一个很好的DI框架)只有很少的文档,我不知道我是否可以使用@ContentView(R.layout.fragmentlayout)来注释我的RoboFragment。 我应该做些什么呢? 我目前做的是: public class TestFragment extends RoboFragment { @InjectView(R.id.upBtn) private Button upBtn; @Override public View onCreateView(LayoutInflater layoutInflater, ViewGroup container, Bundle savedInstanceState) { super.onCreateView(layoutInflater, container, savedInstanceState); View view = layoutInflater.inflate(R.layout.fragmentlayout, container, false); RoboGuice.getInjector(getActivity()).injectMembers(this); upBtn.setSelected(false); // <—— Null pointer here return view; } }

使用Robolectric测试Activity时模拟SQLite-Database

在过去的几天里,我开始玩roboguice,robolectric和mockito。 我有一个小型Android应用程序,其登录屏幕包含AutoCompleteTextView,可以更快地输入用户名。 AutoCompleteTextView的用户名存储在sqlite数据库中。 public class MainActivity extends RoboActivity implements View.OnClickListener { @InjectView(R.id.startScreen_Login_Button) private Button loginButton; @InjectView(R.id.startScreen_Cancel_Button) private Button cancelButton; @InjectView(R.id.startScreen_forgotPwd_TextView) private TextView forgotPWTextView; @InjectView(R.id.startScreen_Username_AutoCompleteTextView) private AutoCompleteTextView loginUsernameAutoCompleteTextView; @InjectView(R.id.startScreen_Password_EditText) private EditText loginPasswordEditText; @Inject private SharedPreferences sharedPreferences; @Inject SQLiteDBAdapter dbAdapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); loginButton.setOnClickListener(this); cancelButton.setOnClickListener(this); forgotPWTextView.setOnClickListener(this); // Creating List for startScreen_Username_AutoCompleteTextView List […]

java.lang.ClassCastException:android.app.Application无法强制转换为roboguice.application.RoboApplication

使用roboguice的例子。 此代码获取ClassCastException。 public class MainActivity extends RoboActivity{ @InjectView(R.id.text) TextView name; @InjectView(R.id.imageView1) ImageView imageView; Drawable icon; @InjectResource(R.string.app_name) String myName; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } 所有jar文件都已包含在内。 我的manifest.xml在这里.. 在这里find这个。 manifest.xml中没有变化。 如果需要那么说。

Android – 设置Roboguice 2.0?

我开始了一个新项目(在Eclipse经典中),将roboguice-2.0.jar guice-2.0-no-aop.jar和jsr305-1.3.9.jar到我的项目和构建路径中。 第一步是扩展RoboApplication,但是eclipse找不到这个类的匹配包。 我查看了源代码,roboguice的包是roboguice.application.RoboApplication ,它不存在。 在我的项目中没有roboguice下的应用程序。 我错过了什么?