当我单击应用程序上的按钮时,我收到以下 Logcat 信息:
06-19 11:24:45.308: E/AndroidRuntime(11498): FATAL EXCEPTION: main
06-19 11:24:45.308: E/AndroidRuntime(11498): java.lang.IllegalStateException: Could not execute method of the activity
06-19 11:24:45.308: E/AndroidRuntime(11498): at android.view.View$1.onClick(View.java:3674)
06-19 11:24:45.308: E/AndroidRuntime(11498): at android.view.View.performClick(View.java:4198)
06-19 11:24:45.308: E/AndroidRuntime(11498): at android.view.View$PerformClick.run(View.java:17164)
06-19 11:24:45.308: E/AndroidRuntime(11498): at android.os.Handler.handleCallback(Handler.java:615)
06-19 11:24:45.308: E/AndroidRuntime(11498): at android.os.Handler.dispatchMessage(Handler.java:92)
06-19 11:24:45.308: E/AndroidRuntime(11498): at android.os.Looper.loop(Looper.java:137)
06-19 11:24:45.308: E/AndroidRuntime(11498): at android.app.ActivityThread.main(ActivityThread.java:4918)
06-19 11:24:45.308: E/AndroidRuntime(11498): at java.lang.reflect.Method.invokeNative(Native Method)
06-19 11:24:45.308: E/AndroidRuntime(11498): at java.lang.reflect.Method.invoke(Method.java:511)
06-19 11:24:45.308: E/AndroidRuntime(11498): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1004)
06-19 11:24:45.308: E/AndroidRuntime(11498): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:771)
06-19 11:24:45.308: E/AndroidRuntime(11498): at dalvik.system.NativeStart.main(Native Method)
06-19 11:24:45.308: E/AndroidRuntime(11498): Caused by: java.lang.reflect.InvocationTargetException
06-19 11:24:45.308: E/AndroidRuntime(11498): at java.lang.reflect.Method.invokeNative(Native Method)
06-19 11:24:45.308: E/AndroidRuntime(11498): at java.lang.reflect.Method.invoke(Method.java:511)
06-19 11:24:45.308: E/AndroidRuntime(11498): at android.view.View$1.onClick(View.java:3669)
06-19 11:24:45.308: E/AndroidRuntime(11498): ... 11 more
06-19 11:24:45.308: E/AndroidRuntime(11498): Caused by: java.lang.NoClassDefFoundError: com.facebook.android.MainActivity$UpdateStatusListener
06-19 11:24:45.308: E/AndroidRuntime(11498): at com.facebook.android.MainActivity.triggerDialog(MainActivity.java:55)
06-19 11:24:45.308: E/AndroidRuntime(11498): at com.facebook.android.MainActivity.firstClicked(MainActivity.java:36)
06-19 11:24:45.308: E/AndroidRuntime(11498): ... 14 more
以下是我如何设置类(class),此处仅显示相关方法和信息:
public class MainActivity extends Activity {
//triggered when the button is clicked
public void firstClicked(View view)
{
triggerDialog();
}
public void triggerDialog()
{
//assume for the sake of this post that this string array has 4 strings
String[] offer_details = postOffer.getDetails();
Bundle params = new Bundle();
params.putString("caption", getString(R.string.app_name)); //Hackbook for Android
Utility.mFacebook.dialog(MainActivity.this, "feed", params, new UpdateStatusListener());
}
public class UpdateStatusListener extends BaseDialogListener {
@Override
public void onComplete(Bundle values) {
Log.i("wbbug","Status post complete.");
final String postId = values.getString("post_id");
if (postId != null) {
Toast toast = Toast.makeText(getApplicationContext(), "Facebook status update successful", Toast.LENGTH_LONG);
toast.show();
} else {
Toast toast = Toast.makeText(getApplicationContext(), "No wall post made",
Toast.LENGTH_LONG);
toast.show();
}
}
}
}
这一切都直接遵循 Facebook SDK 中的示例,并且该示例正在使用此基本代码。为什么找不到类UpdateStatusListener()?谢谢!
最佳答案
我尝试通过 Eclipse 开始使用 Facebook 的 Android SDK,但无法正常工作。在尝试了不同的事情之后,这里是始终有效的解决方案:
1) 仅导入(文件->导入->现有 Android 代码到工作区)Facebook SDK 文件夹 (PATH\facebook-android-sdk-3.0.1)。 (不要检查副本到工作场所)
2) 仅导入(即 PATH\facebook-android-sdk-3.0.1\samples\ProfilePictureSample)示例项目之一(目前)。我将使用 ProfilePictureSample 作为示例
如您所见,Eclipse 抛出错误,表示它不知道 ProfilePictureSampleActivity 中的 FragmentActivity。 FragmentActivity 是 android 支持库的一部分。如果您查看包资源管理器,会发现没有 libs 文件夹或任何对 android 支持库的引用;它位于 FacebookSDK 库中。我们需要告诉 Eclipse 导出它。
4) 右键单击 FacebookSDK 库,然后单击属性。在左侧菜单中,转到 Java 构建路径。然后在“Order and Export”选项卡下检查“Android Private Libraries”(您也可以单击“android-supportv4-jar”)。
5) 项目->清理
现在由于某种原因(也许有人可以详细说明这一点),示例项目还需要导出 android 支持库。
6) 右键单击示例项目(即 ProfilePictureSample),然后单击属性。在左侧菜单中,转到 Java 构建路径。然后在“Order and Export”选项卡下选中“Android Private Libraries”。
7) 项目->清理
希望这有帮助!!
关于java - 使用 Eclipse 在 android 中获取 java.lang.NoClassDefFoundError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17196832/