Resources$NotFoundException是由Integration Facebook-android-sd



我正在尝试将Facebook集成到我的应用程序中。但我一点击fbphoto,就会抛出错误android.content.res.Resources$NotFoundException。我知道它会抛出错误,因为在运行时并没有建立适当的资源。

发现在facebook.authorize(this, new String[] { "email", "publish_stream"}, new DialogListener() {}处引发错误。但根本原因仍然没有找到。

fbphoto.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub
            loginToFacebook();
        }
    });
public void loginToFacebook()
{
if(!facebook.isSessionValid())
    {
        facebook.authorize(this, new String[] { "email", "publish_stream"}, new DialogListener() {
        });
    }

02-08 02:57:58.236: E/AndroidRuntime(1582): FATAL EXCEPTION: main
02-08 02:57:58.236: E/AndroidRuntime(1582): android.content.res.Resources$NotFoundException: String resource ID #0x7f050011
02-08 02:57:58.236: E/AndroidRuntime(1582):     at android.content.res.Resources.getText(Resources.java:201)
02-08 02:57:58.236: E/AndroidRuntime(1582):     at android.content.res.Resources.getString(Resources.java:254)
02-08 02:57:58.236: E/AndroidRuntime(1582):     at android.content.Context.getString(Context.java:183)
02-08 02:57:58.236: E/AndroidRuntime(1582):     at com.facebook.widget.WebDialog.onCreate(WebDialog.java:188)
02-08 02:57:58.236: E/AndroidRuntime(1582):     at android.app.Dialog.dispatchOnCreate(Dialog.java:307)
02-08 02:57:58.236: E/AndroidRuntime(1582):     at android.app.Dialog.show(Dialog.java:225)
02-08 02:57:58.236: E/AndroidRuntime(1582):     at com.facebook.AuthorizationClient$WebViewAuthHandler.tryAuthorize(AuthorizationClient.java:462)
02-08 02:57:58.236: E/AndroidRuntime(1582):     at com.facebook.AuthorizationClient.tryCurrentHandler(AuthorizationClient.java:210)
02-08 02:57:58.236: E/AndroidRuntime(1582):     at com.facebook.AuthorizationClient.tryNextHandler(AuthorizationClient.java:189)
02-08 02:57:58.236: E/AndroidRuntime(1582):     at com.facebook.AuthorizationClient.authorize(AuthorizationClient.java:117)
02-08 02:57:58.236: E/AndroidRuntime(1582):     at com.facebook.AuthorizationClient.startOrContinueAuth(AuthorizationClient.java:98)
02-08 02:57:58.236: E/AndroidRuntime(1582):     at com.facebook.Session.tryLegacyAuth(Session.java:1096)
02-08 02:57:58.236: E/AndroidRuntime(1582):     at com.facebook.Session.authorize(Session.java:893)
02-08 02:57:58.236: E/AndroidRuntime(1582):     at com.facebook.Session.open(Session.java:957)
02-08 02:57:58.236: E/AndroidRuntime(1582):     at com.facebook.Session.openForPublish(Session.java:415)
02-08 02:57:58.236: E/AndroidRuntime(1582):     at com.facebook.android.Facebook.openSession(Facebook.java:319)
02-08 02:57:58.236: E/AndroidRuntime(1582):     at com.facebook.android.Facebook.authorize(Facebook.java:313)
02-08 02:57:58.236: E/AndroidRuntime(1582):     at com.facebook.android.Facebook.authorize(Facebook.java:149)
02-08 02:57:58.236: E/AndroidRuntime(1582):     at com.example.splashscreen.SecondScreen.loginToFacebook(SecondScreen.java:110)
02-08 02:57:58.236: E/AndroidRuntime(1582):     at com.example.splashscreen.SecondScreen$1.onClick(SecondScreen.java:73)
02-08 02:57:58.236: E/AndroidRuntime(1582):     at android.view.View.performClick(View.java:2485)
02-08 02:57:58.236: E/AndroidRuntime(1582):     at android.view.View$PerformClick.run(View.java:9080)
02-08 02:57:58.236: E/AndroidRuntime(1582):     at android.os.Handler.handleCallback(Handler.java:587)
02-08 02:57:58.236: E/AndroidRuntime(1582):     at android.os.Handler.dispatchMessage(Handler.java:92)
02-08 02:57:58.236: E/AndroidRuntime(1582):     at android.os.Looper.loop(Looper.java:123)
02-08 02:57:58.236: E/AndroidRuntime(1582):     at android.app.ActivityThread.main(ActivityThread.java:3683)
02-08 02:57:58.236: E/AndroidRuntime(1582):     at java.lang.reflect.Method.invokeNative(Native Method)
02-08 02:57:58.236: E/AndroidRuntime(1582):     at java.lang.reflect.Method.invoke(Method.java:507)
02-08 02:57:58.236: E/AndroidRuntime(1582):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
02-08 02:57:58.236: E/AndroidRuntime(1582):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
02-08 02:57:58.236: E/AndroidRuntime(1582):     at dalvik.system.NativeStart.main(Native Method)

请注意,如果您正在运行IntelliJ,并且已将Facebook源代码作为库模块包含在项目中,则也会发生此错误。

目前尚不清楚是什么原因导致了这种情况的发生,但当Facebook项目(整个树)作为库模块包含在IntelliJ项目中时,Facebook字符串.xml文件有时会被一个非常简单的字符串.xml文件覆盖,并在Facebook登录屏幕上显示Resources Not Found异常,从而破坏您的应用程序。不仅如此,Facebook AndroidManifest有时也会被覆盖,并导致编译时问题。

替换伪造的strings.xml和AndroidManifest.xml文件将解决此问题。

从堆栈跟踪中,错误是由以下行引起的:

spinner.setMessage(getContext().getString(R.string.com_facebook_loading));

源代码在这里

资源在res/values/string.xml 中正确定义

显然,这个错误不在facebookandroidsdk中。

我想你的项目设置有问题。您可以按照本指南正确设置您的项目。

最新更新