【问题标题】:java.lang.NoClassDefFoundError at Runtime Android Widget运行时 Android 小部件的 java.lang.NoClassDefFoundError
【发布时间】:2012-10-23 21:29:18
【问题描述】:

我在运行 Android 2.3.3 及更早版本的 Android 小部件时遇到问题。

当我在屏幕上安装我的小部件时,会打印此错误:

11-03 10:26:31.127: E/AndroidRuntime(404): FATAL EXCEPTION: main
11-03 10:26:31.127: E/AndroidRuntime(404): java.lang.NoClassDefFoundError: com.app.myapp.StackWidgetService
11-03 10:26:31.127: E/AndroidRuntime(404):  at com.app.myapp.StackWidgetProvider.onUpdate(StackWidgetProvider.java:229)
11-03 10:26:31.127: E/AndroidRuntime(404):  at android.appwidget.AppWidgetProvider.onReceive(AppWidgetProvider.java:61)
11-03 10:26:31.127: E/AndroidRuntime(404):  at com.app.mobideals.StackWidgetProvider.onReceive(StackWidgetProvider.java:216)
11-03 10:26:31.127: E/AndroidRuntime(404):  at android.app.ActivityThread.handleReceiver(ActivityThread.java:1794)
11-03 10:26:31.127: E/AndroidRuntime(404):  at android.app.ActivityThread.access$2400(ActivityThread.java:117)
11-03 10:26:31.127: E/AndroidRuntime(404):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:981)
11-03 10:26:31.127: E/AndroidRuntime(404):  at android.os.Handler.dispatchMessage(Handler.java:99)
11-03 10:26:31.127: E/AndroidRuntime(404):  at android.os.Looper.loop(Looper.java:123)
11-03 10:26:31.127: E/AndroidRuntime(404):  at android.app.ActivityThread.main(ActivityThread.java:3683)
11-03 10:26:31.127: E/AndroidRuntime(404):  at java.lang.reflect.Method.invokeNative(Native Method)
11-03 10:26:31.127: E/AndroidRuntime(404):  at java.lang.reflect.Method.invoke(Method.java:507)
11-03 10:26:31.127: E/AndroidRuntime(404):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
11-03 10:26:31.127: E/AndroidRuntime(404):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
11-03 10:26:31.127: E/AndroidRuntime(404):  at dalvik.system.NativeStart.main(Native Method)

问题是由于编译器没有到达在 StackWidgetProvider 类的 onUpdate 方法中的这一行执行到 StackWidgetService 类的链接:

public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {

        // update each of the widgets with the remote adapter
        for (int i = 0; i < appWidgetIds.length; ++i) {

            // Here we setup the intent which points to the StackViewService which will
            // provide the views for this collection.
            Intent intent = new Intent(context, StackWidgetService.class);
            intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetIds[i]);

该小部件适用于其他版本的 Android,如 3.0、4.0 等...

请帮帮我:)

【问题讨论】:

  • 您是否在 Manifest 中声明了服务?
  • 即使我遇到了同样的问题。你有没有解决这个问题。请帮我解决这个问题

标签: android android-intent android-widget appwidgetprovider


【解决方案1】:

如果您已将 eclipse 插件更新到 ADT 17,您的解决方案可能在这里:Android java.lang.NoClassDefFoundError

也可以在这里查看:http://android.foxykeep.com/dev/how-to-fix-the-classdefnotfounderror-with-adt-17

【讨论】:

  • 感谢您的回复。好像不是这个错误。事实上,问题在于方法:appWidgetManager.notifyAppWidgetViewDataChanged(i, R.id.stack_view); 此方法不适用于我的清单中指定的 min target sdk 10:&lt;uses-sdk android:minSdkVersion="10" android:targetSdkVersion="12" /&gt; 因为我想涵盖 Android 2.3.3(目标 10),而在我之前是最小目标 = 11。我该怎么做才能替换此方法(notifyAppWidgetViewDataChanged 或引入条件以仅在目标 = 11 时使用此代码?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-09-10
  • 1970-01-01
  • 2012-03-12
  • 1970-01-01
  • 2013-07-12
  • 1970-01-01
  • 2010-11-26
相关资源
最近更新 更多