1

我刚刚将 GreenDroid 库添加到我的应用程序中。我用 GDActivity 扩展了 startview 并添加了 NFFApplication 并添加到应用程序标签下的 Manifest 中android:name=".logic.NFFApplication"

NFFA应用:

public class NFFApplication extends GDApplication {

    @Override
    public Class<?> getHomeActivityClass() {
        return NFFApplication.class;
    }

    @Override
    public Intent getMainApplicationIntent() {
        return new Intent(NFFApplication.this,MainView.class);
    }

}

登录活动:

public class LoginView extends GDActivity {

    private ProgressDialog pd = null;
    Editor editor = null;

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setTitle("Movie");
    setActionBarContentView(R.layout.loginlayout);

日志猫:

04-05 16:12:16.714: E/AndroidRuntime(443): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.korn.nff/com.korn.nff.view.LoginView}: android.view.InflateException: Binary XML file line #27: Error inflating class greendroid.widget.ActionBar
04-05 16:12:16.714: E/AndroidRuntime(443):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2496)
04-05 16:12:16.714: E/AndroidRuntime(443):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2512)
04-05 16:12:16.714: E/AndroidRuntime(443):  at android.app.ActivityThread.access$2200(ActivityThread.java:119)
04-05 16:12:16.714: E/AndroidRuntime(443):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1863)
04-05 16:12:16.714: E/AndroidRuntime(443):  at android.os.Handler.dispatchMessage(Handler.java:99)
04-05 16:12:16.714: E/AndroidRuntime(443):  at android.os.Looper.loop(Looper.java:123)
04-05 16:12:16.714: E/AndroidRuntime(443):  at android.app.ActivityThread.main(ActivityThread.java:4363)
04-05 16:12:16.714: E/AndroidRuntime(443):  at java.lang.reflect.Method.invokeNative(Native Method)
04-05 16:12:16.714: E/AndroidRuntime(443):  at java.lang.reflect.Method.invoke(Method.java:521)
04-05 16:12:16.714: E/AndroidRuntime(443):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
04-05 16:12:16.714: E/AndroidRuntime(443):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
04-05 16:12:16.714: E/AndroidRuntime(443):  at dalvik.system.NativeStart.main(Native Method)
04-05 16:12:16.714: E/AndroidRuntime(443): Caused by: android.view.InflateException: Binary XML file line #27: Error inflating class greendroid.widget.ActionBar
04-05 16:12:16.714: E/AndroidRuntime(443):  at android.view.LayoutInflater.createView(LayoutInflater.java:513)
04-05 16:12:16.714: E/AndroidRuntime(443):  at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:565)
04-05 16:12:16.714: E/AndroidRuntime(443):  at android.view.LayoutInflater.rInflate(LayoutInflater.java:618)
04-05 16:12:16.714: E/AndroidRuntime(443):  at android.view.LayoutInflater.inflate(LayoutInflater.java:407)
04-05 16:12:16.714: E/AndroidRuntime(443):  at android.view.LayoutInflater.inflate(LayoutInflater.java:320)
04-05 16:12:16.714: E/AndroidRuntime(443):  at android.view.LayoutInflater.inflate(LayoutInflater.java:276)
04-05 16:12:16.714: E/AndroidRuntime(443):  at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:198)
04-05 16:12:16.714: E/AndroidRuntime(443):  at android.app.Activity.setContentView(Activity.java:1622)
04-05 16:12:16.714: E/AndroidRuntime(443):  at greendroid.app.GDActivity.ensureLayout(GDActivity.java:187)
04-05 16:12:16.714: E/AndroidRuntime(443):  at greendroid.app.GDActivity.getActionBar(GDActivity.java:265)
04-05 16:12:16.714: E/AndroidRuntime(443):  at greendroid.app.GDActivity.setTitle(GDActivity.java:256)
04-05 16:12:16.714: E/AndroidRuntime(443):  at com.korn.nff.view.LoginView.onCreate(LoginView.java:39)
04-05 16:12:16.714: E/AndroidRuntime(443):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
04-05 16:12:16.714: E/AndroidRuntime(443):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2459)
04-05 16:12:16.714: E/AndroidRuntime(443):  ... 11 more
04-05 16:12:16.714: E/AndroidRuntime(443): Caused by: java.lang.reflect.InvocationTargetException
04-05 16:12:16.714: E/AndroidRuntime(443):  at greendroid.widget.ActionBar.<init>(ActionBar.java:130)
04-05 16:12:16.714: E/AndroidRuntime(443):  at java.lang.reflect.Constructor.constructNative(Native Method)
04-05 16:12:16.714: E/AndroidRuntime(443):  at java.lang.reflect.Constructor.newInstance(Constructor.java:446)
04-05 16:12:16.714: E/AndroidRuntime(443):  at android.view.LayoutInflater.createView(LayoutInflater.java:500)
04-05 16:12:16.714: E/AndroidRuntime(443):  ... 24 more
04-05 16:12:16.714: E/AndroidRuntime(443): Caused by: android.content.res.Resources$NotFoundException: File res/drawable-hdpi/title_bar_shadow.9.png from drawable resource ID #0x0
04-05 16:12:16.714: E/AndroidRuntime(443):  at android.content.res.Resources.loadDrawable(Resources.java:1710)
04-05 16:12:16.714: E/AndroidRuntime(443):  at android.content.res.TypedArray.getDrawable(TypedArray.java:548)
04-05 16:12:16.714: E/AndroidRuntime(443):  at android.view.View.<init>(View.java:1850)
04-05 16:12:16.714: E/AndroidRuntime(443):  at android.view.View.<init>(View.java:1799)
04-05 16:12:16.714: E/AndroidRuntime(443):  at android.view.ViewGroup.<init>(ViewGroup.java:284)
04-05 16:12:16.714: E/AndroidRuntime(443):  at android.widget.LinearLayout.<init>(LinearLayout.java:92)
04-05 16:12:16.714: E/AndroidRuntime(443):  at greendroid.widget.ActionBar.<init>(ActionBar.java:134)
04-05 16:12:16.714: E/AndroidRuntime(443):  ... 28 more
04-05 16:12:16.714: E/AndroidRuntime(443): Caused by: java.io.FileNotFoundException: res/drawable-hdpi/title_bar_shadow.9.png
04-05 16:12:16.714: E/AndroidRuntime(443):  at android.content.res.AssetManager.openNonAssetNative(Native Method)
04-05 16:12:16.714: E/AndroidRuntime(443):  at android.content.res.AssetManager.openNonAsset(AssetManager.java:390)
04-05 16:12:16.714: E/AndroidRuntime(443):  at android.content.res.Resources.loadDrawable(Resources.java:1702)
4

1 回答 1

3

我不是 100% 确定这是否是问题所在,但可能是您忘记覆盖主题了吗?Greendroid 需要一个自定义主题才能运行应用程序。

这是greendroid文档中的一行:

You finally need to make your project use the GreenDroid base theme. In your AndroidManifest.xml, go to the application tag and add android:theme="@style/Theme.GreenDroid" as a new attribute.

您必须遵循的步骤:

  1. 使用一个简单的方法在您的计算机上下载 GreenDroid 库: git clone http://github.com/cyrilmottier/GreenDroid.git。像往常一样,Git 将克隆 GreenDroid 存储库并创建一个文件夹 GreenDroid,其中包含 3 个文件夹: GreenDroid:核心库。这是将主要链接到您的代码的代码 GreenDroid-GoogleAPIs:GreenDroid 的扩展,包括 Google API 相关功能(例如 GDMapActivity) GDDatalog:演示应用程序。该项目包含大量代码片段,向您展示如何使用 GreenDroid。

  2. 自 2010 年 5 月以来,ADT 插件添加了一个惊人的新功能:处理库项目的能力。使用 GreenDroid 包括将 GreenDroid 项目作为库应用到您的应用程序中。Android 文档网站上提供了有关如何使用库项目的完整说明。确保您的开发环境使用最新的工具和平台,因为旧版本的工具和平台不支持使用库项目构建。

  3. 如果您想使用某些 Google API 功能,请确保您使用的是 GreenDroid-GoogleAPIs 库。GreenDroid-GoogleAPIs 基于 GreenDroid。因此,您无需将 GreenDroid 作为 Android 库链接到您的项目。默认情况下,GreenDroid 主题继承自 @android:style/Theme。如果您的项目继承自不同的主题,则您必须自己修改 GreenDroid 库(并且每次更新 GreenDroid 时都要这样做,因为更新会删除您的所有更改 - 仍在努力克服该问题)。打开 res/values/gd_themes.xml 并将父主题 @android:style/Theme 替换为您自己的主题。

  4. GreenDroid 的许多功能(例如 GDActivity、GDListActivity 或 GDTabActivity)都要求您的应用程序是 GDApplication,因此请确保您的应用程序是 GDApplication 类。为此,只需在 AndroidManifest.xml 的应用程序标记中添加 android:name="greendroid.app.GDApplication(其中 greendroid.app.GDApplication 可能被您自己的继承自 GDApplication 的类替换)。

  5. 您最终需要让您的项目使用 GreenDroid 基础主题。在您的 AndroidManifest.xml 中,转到应用程序标签并添加 android:theme="@style/Theme.GreenDroid" 作为新属性。

于 2012-04-05T16:25:47.697 回答