【问题标题】:How to make simple android app with roboguice that injects a textView?如何使用注入 textView 的 roboguice 制作简单的 android 应用程序?
【发布时间】:2013-03-27 05:28:12
【问题描述】:

我是依赖注入和 roboguice 的初学者。我只想能够在我的应用程序中注入视图和资源。问题是,当我使用 RoboActivity 扩展我的课程时,我得到了 ClassNotFoundException。

package tes.tes;
//imports
public class test extends RoboActivity {
/** Called when the activity is first created. */

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.main);
}

这是堆栈跟踪:

  06-09 13:54:08.887: ERROR/AndroidRuntime(495): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{tes.tes/tes.tes.test}:java.lang.ClassNotFoundException: tes.tes.test in loader dalvik.system.PathClassLoader[/data/app/tes.tes-1.apk]
  06-09 13:54:08.887: ERROR/AndroidRuntime(495):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2585)
  06-09 13:54:08.887: ERROR/AndroidRuntime(495):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
...
  06-09 13:54:08.887: ERROR/AndroidRuntime(495): Caused by: java.lang.ClassNotFoundException: tes.tes.test in loader dalvik.system.PathClassLoader[/data/app/tes.tes-1.apk]
  06-09 13:54:08.887: ERROR/AndroidRuntime(495):     at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:243
...

还有我的清单

coding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="tes.tes"
      android:versionCode="1"
      android:versionName="1.0">


    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".test"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

    </application>
</manifest>

我认为我的依赖关系很好,因为我可以看到 guice、roboguice 等的 jar 文件。 我尝试按照文档下载示例代码,但这对我来说太复杂了。 我不知道我错过了什么。

感谢您的帮助。

【问题讨论】:

  • 您的类路径 (tes.tes.test) 看起来很可疑。发布您的AndroidManifest.xml
  • 我已经发布了我的清单。感谢您的快速回复!
  • 我想我也应该要求 test 类的包!我的错。那么,test 类的包名是什么?
  • 没关系..我更新了..还有什么需要帮助我的吗?
  • 你的包命名约定真的很差。考虑使用标准约定 (java.about.com/od/javasyntax/a/nameconventions.htm)

标签: android roboguice


【解决方案1】:

我正在提交一个新答案,因为 RoboGuice 2.0 改变了它的工作方式。现在,在 res/values/ 中创建一个名为 roboguice.xml 的 XML 文件。在那里列出您的模块,如下所示:

<?xml version="1.0" encoding="utf-8"?>
  <resources> 
    <string-array name="roboguice_modules">
    <item>com.example.CustomRenderModule</item>
    <item>com.you.yourmodule.TexModule</item>
  </string-array>
</resources>

Another example.

【讨论】:

    【解决方案2】:

    您没有正确扩展 RoboApplication。请考虑通过完整的RoboGuice installation tutorial

    【讨论】:

    【解决方案3】:

    我遵循了手册并使用了正确的命名约定,并且成功了!

    虽然这条线

    @Override
    protected void addApplicationModules(List<Module> modules) {
        modules.add(new MyModule());
    }
    

    在扩展 RoboApplication 的 MyApplication.java 中有错误并说删除 @Override,当我删除 @Override 时,它​​说它与位于 RoboApplication 中的另一个方法发生冲突。我不知道为什么。

    【讨论】:

    • 这是使用 roboguice 1.1 时的常见问题。值得庆幸的是,即将推出的 roboguice 1.2 应该让这一步变得多余。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-24
    • 1970-01-01
    • 2016-09-14
    • 2011-04-06
    相关资源
    最近更新 更多