2014-10-30 63 views

回答

0

您的項目結構的其餘部分是什麼樣的?

具體來說,你讀過的Android工作室的RoboBlender wiki

後來的版本將在默認情況下,產生落入Configuring RoboBlender for a large application using libraries -category的項目。下面

修復執行以下操作:

  1. 中的build.gradle
  2. 用品指針在項目GuiceModule
  3. 基本的模塊,爲您的項目重新排列依賴性


diff --git a/app/build.gradle b/app/build.gradle 
index 1e69cec..8450fff 100644 
--- a/app/build.gradle 
+++ b/app/build.gradle 
@@ -34,9 +34,9 @@ android { 
} 

dependencies { 
- provided 'org.roboguice:roboblender:3.0' 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    compile 'org.roboguice:roboguice:3.0' 
+ provided 'org.roboguice:roboblender:3.0' 
} 

project.tasks.withType(JavaCompile) { task -> 
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml 
index 017d11e..dba9e49 100644 
--- a/app/src/main/AndroidManifest.xml 
+++ b/app/src/main/AndroidManifest.xml 
@@ -8,6 +8,7 @@ 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme" > 
     <meta-data android:name="roboguice.annotations.packages" android:value="org.jush.roboguice3test"/> 
+  <meta-data android:name="roboguice.modules" android:value="org.jush.roboguice3test.GuiceModule"/> 
     <activity 
      android:name="org.jush.roboguice3test.MainActivity" 
      android:label="@string/app_name" > 


package org.jush.roboguice3test; 

import android.app.Application; 

import com.google.inject.AbstractModule; 

public class GuiceModule extends AbstractModule { 
    private Application application; 

    public GuiceModule(Application application) { 
     this.application = application; 
    } 

    @Override 
    protected void configure() { 
    } 
} 
+0

我增加了編譯器參數和元數據在Android清單。 您可以在以下網址找到完整的項目:https://github.com/jush/RoboGuice3Test 錯誤仍然是:「路徑上沒有找到類」org.jush.roboguice3test.AnnotationDatabaseImpl「:/ data/app/org .jush.roboguice3test-1.apk「 – jush 2014-10-30 21:05:56

+0

'''AndroidManifest.xml''缺少類似'''meta-data android:name =」roboguice.modules「android:value =」org.jush.roboguice3test。 GuiceModule「/>'''然後在你的項目中創建該模塊。它可能很空虛。 – 2014-10-30 21:13:25

+0

感謝您的建議,但它並沒有幫助,即使我添加它:https://github.com/jush/RoboGuice3Test/commit/0726a14e447b81b5fd003fde0f0d03957a96e9e8 – jush 2014-10-30 21:44:40

1

好了,好像是因爲我沒有任何注射的主類MainActivity它沒有觸發內AsyncTask的註釋處理。因此沒有創建註釋數據庫。

此外,似乎不支持匿名內部類中的注入。所以AsyncTask需要是一個適當的類(它仍然可以在MainActivity內)。

我還沒有想出如何告訴RoboGuice檢查內部類,即使外部類沒有注射。

+0

你能弄清楚這一點嗎? – amadib 2015-12-07 15:51:21

+1

不,我們決定切換到[Dagger 2](http://google.github.io/dagger/)。 – jush 2015-12-08 06:48:56

0

你做了什麼,它確實觸發了註釋處理?我的主要活動有注射。 maina活動從具有注射的抽象活動繼承。該抽象活動從RoboActivity繼承。

當我設置roboguice.annotations.packagesroboguice的NoClassFound例外不再被拋出,但我得到的第注入-對象,我想使用空指針異常。

我使用eclipse來啓動應用程序。

當我禁用RoboBlender(RoboGuice.setUseAnnotationDatabases(false);)注入工作。

+0

如果您的活動繼承自RoboActivity,那麼它與我所擁有的不同。 此外,你說,如果你禁用註釋數據庫,那麼它的工作原理。因此,注入正在工作,但不會生成db。 另外我沒有找到任何方法來觸發內部匿名類的注入。我必須轉到自己的班級。 – jush 2014-11-14 11:06:34

+0

Roboblender甚至可以使用Eclipse嗎?我一直在AnnotationDatabaseImpl上獲得noclassdeffound,該類不會生成。 – Christine 2014-12-09 18:52:25

4

這不是一個最終的解決方案,但它可以幫助你。我不知道爲什麼,但RoboGuice 3.0和3.0.1拋出這個異常。你必須要做的是在你的MainActivity數據庫禁用註解如下:

static { 
    RoboGuice.setUseAnnotationDatabases(false); 
} 

我希望這幫助