【问题标题】:unfortunately "appname" has stopped working不幸的是,“appname”已停止工作
【发布时间】:2013-09-26 13:03:42
【问题描述】:

我正在关注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):致命异常:主要 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): 在 java.lang.reflect.Method.invokeNative(Native Method) 09-26 18:55:54.564: E/AndroidRuntime(11123): 在 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): at 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): at 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): at com.facebook.Session.(Session.java:216) 09-26 18:55:54.564: E/AndroidRuntime(11123): at 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): 在 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 更多

【问题讨论】:

  • 'applicationId' cannot be null?
  • @RobinHood 已经在 string.xml 中提供了我的应用程序 ID ******************** string> 如果你在谈论另一个,请告诉我,谢谢。
  • hellofriend设置Hello world!******** 你说的是这个吗?
  • @AamirSaif 看看我的回答,这是使用 FB SDK 时出现此类异常的解决方案

标签: android eclipse facebook


【解决方案1】:

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

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

&lt;/application&gt; 标记上方。

"@string/fb_app_id"strings.xml 文件中 Facebook 开发者控制台中的您的 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();
    }
}

像这样重命名您的&lt;application&gt; in AndroidManifest.xml

<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" 
android:name=".MyApp">
...

【讨论】:

  • 我已经发布了我的清单文件,我在提供应用程序 ID 的那一行出现错误。
  • android:value="@string/21907****928145" 更改为android:value="@string/app_id" 或只是android:value="21907****928145"
  • 感谢@Sebastian Swierczek,它从清单中删除了错误,但我仍然面临同样的问题“不幸的是'appname'已停止工作”
  • 我按照你说的做了,但还没有成功:(
【解决方案2】:

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

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

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

【讨论】:

  • 我已经更新了我的清单,检查一下,让我知道出了什么问题。我仍然面临“不幸的是'appname'已停止工作”的相同问题
  • 尝试使用名称“AppId”和您的应用程序 ID 作为值的字符串资源。在你的清单中放 另外,不确定它是否重要,但我总是把它放在应用程序和不在 Activity 中
  • 通过将 放入应用程序节省了我的时间谢谢@stackoverflow.com/users/1373050/mark-buikema
猜你喜欢
  • 2014-01-03
  • 2015-08-17
  • 2014-01-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-25
相关资源
最近更新 更多