我开始使用 facebook-android-sdk-3.5.2。
SDK项目还包含使用api的varius示例示例:
接下来我想尝试下一个名为:
的例子启动此应用程序后,我收到此错误:(Logcat):
11-11 15:22:40.008: E/AndroidRuntime(14048): FATAL EXCEPTION: main
11-11 15:22:40.008: E/AndroidRuntime(14048): java.lang.RuntimeException: Unable to resume activity {com.facebook.samples.graphapi/com.facebook.samples.graphapi.GraphApiSampleActivity}: java.lang.IllegalArgumentException: Both context and applicationId must be non-null
11-11 15:22:40.008: E/AndroidRuntime(14048): at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2621)
11-11 15:22:40.008: E/AndroidRuntime(14048): at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2649)
11-11 15:22:40.008: E/AndroidRuntime(14048): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2122)
11-11 15:22:40.008: E/AndroidRuntime(14048): at android.app.ActivityThread.access$700(ActivityThread.java:134)
11-11 15:22:40.008: E/AndroidRuntime(14048): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1218)
11-11 15:22:40.008: E/AndroidRuntime(14048): at android.os.Handler.dispatchMessage(Handler.java:99)
11-11 15:22:40.008: E/AndroidRuntime(14048): at android.os.Looper.loop(Looper.java:137)
11-11 15:22:40.008: E/AndroidRuntime(14048): at android.app.ActivityThread.main(ActivityThread.java:4867)
11-11 15:22:40.008: E/AndroidRuntime(14048): at java.lang.reflect.Method.invokeNative(Native Method)
11-11 15:22:40.008: E/AndroidRuntime(14048): at java.lang.reflect.Method.invoke(Method.java:511)
11-11 15:22:40.008: E/AndroidRuntime(14048): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1007)
11-11 15:22:40.008: E/AndroidRuntime(14048): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:774)
11-11 15:22:40.008: E/AndroidRuntime(14048): at dalvik.system.NativeStart.main(Native Method)
11-11 15:22:40.008: E/AndroidRuntime(14048): Caused by: java.lang.IllegalArgumentException: Both context and applicationId must be non-null
11-11 15:22:40.008: E/AndroidRuntime(14048): at com.facebook.AppEventsLogger.activateApp(AppEventsLogger.java:308)
11-11 15:22:40.008: E/AndroidRuntime(14048): at com.facebook.AppEventsLogger.activateApp(AppEventsLogger.java:292)
11-11 15:22:40.008: E/AndroidRuntime(14048): at com.facebook.samples.graphapi.GraphApiSampleActivity.onResume(GraphApiSampleActivity.java:76)
11-11 15:22:40.008: E/AndroidRuntime(14048): at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1199)
11-11 15:22:40.008: E/AndroidRuntime(14048): at android.app.Activity.performResume(Activity.java:5121)
11-11 15:22:40.008: E/AndroidRuntime(14048): at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2611)
我明白了:
引起:java.lang.IllegalArgumentException:context和applicationId都必须为非null
好的,但我没有改变代码中的东西。 应该有用,对吗?
我试图:
删除项目,然后导入
删除项目,并从现有代码中添加新的Android项目
清理我的项目
删除facebook sdk库依赖关系并重新导入,然后再次清理。
所有这些后的结果相同。
如果有人熟悉这个问题,请。帮助我。
E D I T:
出于某种原因,这个官方的facebook样本不包含appId。 谢谢你的建议!
答案 0 :(得分:24)
尝试在app_id
中设置strings.xml
或添加它。在此处的入门教程中也提到了它:Documentation
另外一步:
在AndroidManifest.xml中创建名为com.facebook.sdk.ApplicationId
和值为@string/app_id
的元数据
答案 1 :(得分:5)
如果您没有(或想要)存储在strings.xml中的Facebook应用程序ID(例如,您可能通过互联网动态接收Facebook应用程序ID),那么您可以调用此方法来激活...
AppEventsLogger.activateApp(Context context, String facebookAppId)
您应该在活动的onResume()
方法中调用此方法:
@Override
protected void onResume() {
super.onResume();
AppEventsLogger.activateApp(...);
}