Articles of roboguice

Android – build立Roboguice 2.0?

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

Robolectric + PowerMock + Mockito不工作

我正在努力获得这个罕见的组合作品,但我没有运气。 我的项目使用JUnit + Mockito + Robolectric进行testing,并使用Roboguice进行注入,当我将PowerMock添加到等式中时发生了奇怪的事情,这是我尝试过的一些事情: 1.开箱即用的PowerMock + Mockito + Robolectic集成。 正如在PowerMockIngration上所build议的那样,我添加了一个@PowerMockRunnerDelegate来包含从RobolectricGradleTestRunner扩展的自定义RobolectricGradleTestRunner : 的build.gradle testCompile 'org.powermock:powermock-module-junit4:1.6.4' testCompile 'org.powermock:powermock-api-mockito:1.6.4' testing @RunWith(PowerMockRunner.class) @PowerMockRunnerDelegate(MyCustomRunner.class) @Config(constants = BuildConfig.class) @PowerMockIgnore({"org.mockito.*", "org.robolectric.*", "android.*"}) @PrepareForTest(RoboGuice.class) public class Test { @Before public void setUp() throws Exception { PowerMockito.mockStatic(RoboGuice.class); …. } 结果: java.lang.IllegalArgumentException: Cannot subclass final class class roboguice.RoboGuice at org.mockito.cglib.proxy.Enhancer.generateClass(Enhancer.java:447) at org.mockito.cglib.core.DefaultGeneratorStrategy.generate(DefaultGeneratorStrategy.java:25) at […]

注入视图(Roboguice)不能处理多个布局

所以我对这个Activity有不同的布局。 而且我有不同的课程,每个课程都可以打开,并使用布局进行操作。 我通过@Inject将这些类注入到活动中。 这一切都没有问题。 但是,当我尝试使用@InjectView在一个非活动布局的控件之一,我得到一个错误。 11-02 19:17:31.086:错误/ AndroidRuntime(1326):导致:java.lang.NullPointerException:不能注入null值到类be.baes.notes.View.EditNoteImpl.saveButton当字段不是@Nullable 这将是代码。 public class EditNoteImpl implements EditNote { @Inject CancelEditNoteClickListener cancelEditNoteClickListener; @Inject SaveNoteClickListener saveNoteClickListener; @Inject Provider<Activity> activity; @InjectView(R.id.saveButton) Button saveButton; /* (non-Javadoc) * @see be.baes.notes.EditNote#activateEditNote() */ @Override public void activateEditNote() { activity.get().setContentView(R.layout.editnote); this.saveButton.setOnClickListener(saveNoteClickListener); } } 我可以做到这一点。 public class EditNoteImpl implements EditNote { @Inject CancelEditNoteClickListener cancelEditNoteClickListener; @Inject SaveNoteClickListener saveNoteClickListener; […]

是什么让Guice无法在Android上运行,除了Guice-no-aop?

我在Guice的下载页面上看到一个名为guice-no-aop的模块,其目的显然是针对Android开发者的营销。 一些在线search使像RoboGuice这样的库看起来像是在执行类似的基于AOP的IoC,几篇文章甚至给出了很好的代码示例。 但我的问题是:为什么Guice在没有这些特殊库的Android应用上运行? 我期待在Guice的网站/ wiki上find一些东西,但令我惊讶的是,找不到任何理由。 有人知道吗? 编辑 这个问题的辅助是一个更广泛的问题: 还有哪些Java框架不能在Android上运行?!? (什么是经验法则?)

Android的ORMLite:绑定与Roboguice的DAO

我只是试图用ORMLite设置我的Android项目。 我正在使用Roboguice进行DI。 现在我的问题是,这里有没有人可以帮助他们一起工作。 我已经设置了我的助手类扩展OrmLiteSqliteOpenHelper 。 现在我想知道如何注入正确的DAO类。 一般的最佳做法是太棒了。 由于使用OrmLiteBaseActivity不应该真的适用,因为这应该由Roboguice处理。 问题只是:如何? 我非常感谢您的帮助,您的经验,最佳实践等。

roboblender-3.0.1.jar:不包含在Android:javax.tools中。 引用来自com.google.inject.blender.AnnotationDatabaseGenerator

我试图build立我的android项目,我得到: Information:Gradle: Executing tasks: [clean, :app:compileDebugSources] Information:1/10/15, 11:13 AM – Compilation completed successfully in 5 sec 然后我尝试将其部署到我的设备,并得到: FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':app:lint'. > Lint found errors in the project; aborting build. Fix the issues identified by lint, or add the following to your build script […]

Android Roboguice proguard警告

我似乎无法编译没有警告。 这是警告: Warning:roboguice.activity.RoboMapActivity: can't find superclass or interface com.google.android.maps.MapActivity Warning:roboguice.activity.RoboSherlockActivity: can't find superclass or interface com.actionbarsherlock.app.SherlockActivity Warning:roboguice.activity.RoboSherlockFragmentActivity: can't find superclass or interface com.actionbarsherlock.app.SherlockFragmentActivity Warning:roboguice.activity.RoboSherlockListActivity: can't find superclass or interface com.actionbarsherlock.app.SherlockListActivity Warning:roboguice.activity.RoboSherlockPreferenceActivity: can't find superclass or interface com.actionbarsherlock.app.SherlockPreferenceActivity Warning:roboguice.activity.SherlockAccountAuthenticatorActivity: can't find superclass or interface com.actionbarsherlock.app.SherlockActivity Warning:roboguice.fragment.RoboSherlockDialogFragment: can't find superclass or interface com.actionbarsherlock.app.SherlockDialogFragment Warning:roboguice.fragment.RoboSherlockFragment: can't find superclass […]

RoboGuice 3.0 NoClassDefFoundError:roboguice.inject.ContextScopedRoboInjector

这并不总是可见,但在特定的API 14和19上看到。 以下是堆栈跟踪 java.lang.NoClassDefFoundError: roboguice.inject.ContextScopedRoboInjector at roboguice.RoboGuice.getInjector(RoboGuice.java:197) at roboguice.activity.RoboActivity.onCreate(RoboActivity.java:90) at com.bnmcombines.galleryflavors.Launcher.onCreate(Launcher.java:71) at android.app.Activity.performCreate(Activity.java:5343) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1088) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2343) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2441) at android.app.ActivityThread.access$900(ActivityThread.java:151) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1354) at android.os.Handler.dispatchMessage(Handler.java:110) at android.os.Looper.loop(Looper.java:193) at android.app.ActivityThread.main(ActivityThread.java:5345) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:828) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:644) at dalvik.system.NativeStart.main(Native Method) RoboGuice 3.0已经logging了一个问题: https : //github.com/roboguice/roboguice/issues/328 但没有回应,我们目前被封锁。 问题解决了 这次我更仔细地介绍了MultiDex Document,并将我的AndroidManifest.xml更新到了我以前错过的版本 <application … android:name="android.support.multidex.MultiDexApplication"> … </application> […]

Android&RoboGuice – 在片段上注入视图?

我有一个片段,我需要在屏幕上显示。 我想能够使用InjectView来注入我的UI元素。 InjectView在活动上效果很好,因为view(xml)是在onCreate设置的,但是在onCreatView上设置了视图的片段。 那么有没有办法在片段上使用InjectView呢? 我知道我可以使用findViewbyId查找每个元素,但我宁愿使用InjectView public class ProfileFragment extends RoboDialogFragment { @InjectView(R.id.commentEditText) protected EditText commentEditText; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // I get a null pointer exception here commentEditText.setText("Some comment"); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.profile , container, false); // I get a null […]

在Android上使用DI有什么特别的好处?

使用Android的dependency injection框架(如Dagger , Transfuse或RoboGuice)的具体优点或优点是什么? 例如,什么样的应用程序会从使用DI获益最多? 有更多的性能优势,还是更容易扩展一个应用程序,甚至更多的是使其可testing? 问这个问题的原因之一就是要估计一下,我正在开发的应用程序是否真正从中获益,或者不会太多。 因为我打算应用程序在某个时候是认真的,即使使用昂贵(更多的时间来设置,学习曲线等)的第一个版本,可testing性和易于扩展将是伟大的。 谢谢!