1

我正在关注https://developers.facebook.com/docs/android/getting-started/facebook-sdk-for-android/ for android sdk,一切都很好,因为它在给定的lik中描述,但是当我跑我的项目出现错误“不幸的是,'appname' 已停止工作”,这是我的 logcat 错误:

09-26 17:37:06.662: E/AndroidRuntime(5849): FATAL EXCEPTION: main
09-26 17:37:06.662: E/AndroidRuntime(5849): java.lang.RuntimeException: Unable to start         activity ComponentInfo{com.facebook.hellofriend/com.facebook.hellofriend.MainActivity}:    java.lang.NullPointerException: Argument 'applicationId' cannot be null
09-26 17:37:06.662: E/AndroidRuntime(5849):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2202)
09-26 17:37:06.662: E/AndroidRuntime(5849):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2237)
09-26 17:37:06.662: E/AndroidRuntime(5849):     at android.app.ActivityThread.access$600(ActivityThread.java:139)
09-26 17:37:06.662: E/AndroidRuntime(5849):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1262)
09-26 17:37:06.662: E/AndroidRuntime(5849):     at android.os.Handler.dispatchMessage(Handler.java:99)
09-26 17:37:06.662: E/AndroidRuntime(5849):     at android.os.Looper.loop(Looper.java:154)
09-26 17:37:06.662: E/AndroidRuntime(5849):     at android.app.ActivityThread.main(ActivityThread.java:4974)
09-26 17:37:06.662: E/AndroidRuntime(5849):     at java.lang.reflect.Method.invokeNative(Native Method)
09-26 17:37:06.662: E/AndroidRuntime(5849):     at java.lang.reflect.Method.invoke(Method.java:511)
09-26 17:37:06.662: E/AndroidRuntime(5849):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
09-26 17:37:06.662: E/AndroidRuntime(5849):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
09-26 17:37:06.662: E/AndroidRuntime(5849):     at dalvik.system.NativeStart.main(Native Method)
09-26 17:37:06.662: E/AndroidRuntime(5849): Caused by: java.lang.NullPointerException: Argument 'applicationId' cannot be null
09-26 17:37:06.662: E/AndroidRuntime(5849):     at com.facebook.internal.Validate.notNull(Validate.java:29)
09-26 17:37:06.662: E/AndroidRuntime(5849):     at com.facebook.Session.<init>(Session.java:227)
09-26 17:37:06.662: E/AndroidRuntime(5849):     at com.facebook.Session.<init>(Session.java:216)
09-26 17:37:06.662: E/AndroidRuntime(5849):     at com.facebook.Session$Builder.build(Session.java:1575)
09-26 17:37:06.662: E/AndroidRuntime(5849):     at com.facebook.Session.openActiveSession(Session.java:888)
09-26 17:37:06.662: E/AndroidRuntime(5849):     at com.facebook.Session.openActiveSession(Session.java:830)
09-26 17:37:06.662: E/AndroidRuntime(5849):     at com.facebook.hellofriend.MainActivity.onCreate(MainActivity.java:19)
09-26 17:37:06.662: E/AndroidRuntime(5849):     at android.app.Activity.performCreate(Activity.java:4538)
09-26 17:37:06.662: E/AndroidRuntime(5849):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1071)
09-26 17:37:06.662: E/AndroidRuntime(5849):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2158)
09-26 17:37:06.662: E/AndroidRuntime(5849):     ... 11 more

谢谢。

我的清单文件是:

<uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="17" />

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name="com.facebook.hellofriend.MainActivity"
        android:label="@string/app_name" >
        <meta-data android:name="com.facebook.sdk.ApplicationId" 
        android:value="21907****928145"/>
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

</application>

</manifest>

这是我的新 logcat 错误 :( 09-26 18:55:54.564: E/AndroidRuntime(11123): FATAL EXCEPTION: main 09-26 18:55:54.564: E/AndroidRuntime(11123): java.lang.RuntimeException:无法启动活动 ComponentInfo{com.facebook.hellofriend/com.facebook.hellofriend.MainActivity}:java.lang.NullPointerException:参数“applicationId”不能为空 09-26 18:55:54.564:E/AndroidRuntime(11123):在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2202) 09-26 18:55:54.564: E/AndroidRuntime(11123): 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2237) 09-26 18 :55:54.564: E/AndroidRuntime(11123): 在 android.app.ActivityThread.access$600(ActivityThread.java:139) 09-26 18:55:54.564: E/AndroidRuntime(11123): 在 android.app.ActivityThread $H.handleMessage(ActivityThread.java:1262) 09-26 18:55:54.564: E/AndroidRuntime(11123): 在 android.os.Handler.dispatchMessage(Handler.java:99) 09-26 18:55:54.564: E/AndroidRuntime(11123): 在 android.os.Looper.loop(Looper .java:154) 09-26 18:55:54.564: E/AndroidRuntime(11123): 在 android.app.ActivityThread.main(ActivityThread.java:4974) 09-26 18:55:54.564: E/AndroidRuntime(11123 ): at java.lang.reflect.Method.invokeNative(Native Method) 09-26 18:55:54.564: E/AndroidRuntime(11123): at java.lang.reflect.Method.invoke(Method.java:511) 09 -26 18:55:54.564: E/AndroidRuntime(11123): 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 09-26 18:55:54.564: E/AndroidRuntime(11123 ): 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 09-26 18:55:54.564: E/AndroidRuntime(11123): 在 dalvik.system.NativeStart.main(Native Method) 09 -26 18:55:54.564:E/AndroidRuntime(11123):引起:java.lang.NullPointerException:参数'applicationId'不能为空09-26 18:55:54.564:E/AndroidRuntime(11123):在com.facebook.internal.Validate.notNull( Validate.java:29) 09-26 18:55:54.564: E/AndroidRuntime(11123): at com.facebook.Session.(Session.java:227) 09-26 18:55:54.564: E/AndroidRuntime(11123) ): 在 com.facebook.Session.(Session.java:216) 09-26 18:55:54.564: E/AndroidRuntime(11123): 在 com.facebook.Session$Builder.build(Session.java:1575) 09 -26 18:55:54.564: E/AndroidRuntime(11123): at com.facebook.Session.openActiveSession(Session.java:888) 09-26 18:55:54.564: E/AndroidRuntime(11123): at com.facebook .Session.openActiveSession(Session.java:830) 09-26 18:55:54.564: E/AndroidRuntime(11123): at com.facebook.hellofriend.MainActivity.onCreate(MainActivity.java:19) 09-26 18:55 :54.564: E/AndroidRuntime(11123): 在 android.app.Activity.performCreate(Activity.java:4538) 09-26 18:55:54.564: E/AndroidRuntime(11123): 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation .java:1071) 09-26 18:55:54.564: E/AndroidRuntime(11123): 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2158) 09-26 18:55:54.564: E/AndroidRuntime(11123 ): ... 11 更多

4

2 回答 2

1

您指的是字符串“@string/21907****928145”

我猜你有一个字符串资源,名称为“21907****928145”,应用程序键作为值。

字符串资源的名称不能以数字开头。

于 2013-09-26T13:52:47.377 回答
1

您必须在清单文件中添加和应用程序 ID

<meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/fb_app_id"/>

上面的</application>标签。

"@string/fb_app_id"是来自 Facebook 开发者控制台内部strings.xml文件的您的 Fb 应用程序 ID。

编辑:

如果您确定您的清单如下所示:

<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" />

<uses-permission android:name="android.permission.INTERNET"/>

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name="com.facebook.hellofriend.MainActivity"
        android:label="@string/app_name" >

        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <meta-data android:name="com.facebook.sdk.ApplicationId" android:value="21907****928145"/>

</application>

尝试在代码中设置 App ID:

session = new Session(this);
session = new Session.Builder(this).setApplicationId("21907****928145").build();

编辑:(在代码中使用设置应用程序 ID 的示例)

创建新类并将其放入主包中:

public class MyApp extends Application{
    @Override
    public void onCreate() {
        super.onCreate();
        session = new Session(this);
        session = new Session.Builder(this).setApplicationId("21907****928145").build();
    }
}

像这样重命名你<application> in AndroidManifest.xml

<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" 
android:name=".MyApp">
...
于 2013-09-26T13:25:11.390 回答