Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/185.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Facebook API-StringBuilder返回空值_Android_Facebook_Nullpointerexception - Fatal编程技术网

Android Facebook API-StringBuilder返回空值

Android Facebook API-StringBuilder返回空值,android,facebook,nullpointerexception,Android,Facebook,Nullpointerexception,我正在这里学习Android Facebook教程: 在这段代码中: private String buildUserInfoDisplay(GraphUser user) { StringBuilder userInfo = new StringBuilder(""); Log.d("Graphuser:user",user.toString()); Log.d("StringBuilder:userInfo",userInfo.toStrin

我正在这里学习Android Facebook教程:

在这段代码中:

private String buildUserInfoDisplay(GraphUser user) {

        StringBuilder userInfo = new StringBuilder("");
        Log.d("Graphuser:user",user.toString());
        Log.d("StringBuilder:userInfo",userInfo.toString());
        // Example: typed access (name)
        // - no special permissions required
        Log.d("Name: ",String.format("Name: %s\n\n", user.getName()));

        userInfo.append(String.format("Name: %s\n\n", user.getName()));

        // Example: typed access (birthday)
        // - requires user_birthday permission
        //userInfo.append(String.format("Birthday: %s\n\n", user.getBirthday()));

        // Example: partially typed access, to location field,
        // name key (location)
        // - requires user_location permission
        //userInfo.append(String.format("Location: %s\n\n", user.getLocation().getProperty("name")));

        // Example: access via property name (locale)
        // - no special permissions required
        userInfo.append(String.format("Locale: %s\n\n", user.getProperty("locale")));

     // Get a list of languages from an interface that
     // extends the GraphUser interface and that returns
     // a GraphObject list of MyGraphLanguage objects.
     GraphObjectList<MyGraphLanguage> languages = (user.cast(MyGraphUser.class)).getLanguages();
     Log.d("Languages",languages.toString());
     if (languages.size() > 0) {
         ArrayList<String> languageNames = new ArrayList<String> ();
         // Iterate through the list of languages
         for (MyGraphLanguage language : languages) {
             // Add the language name to a list. Use the name
             // getter method to get access to the name field.
             languageNames.add(language.getName());
         }                      

         //userInfo.append(String.format("Languages: %s\n\n", languageNames.toString()));
     }

        return userInfo.toString();
    }

这可能与
buildUserInfoDisplay
的线程安全有关,因为StringBuilder不应该像那样失败。可能有不同的线程同时访问函数,这会导致NPE(StringBuilder内部?)

尝试同步该方法或使用
StringBuffer
而不是
StringBuilder
,这是线程安全的


附言:哇,这就像为荣耀而写:)

当用户没有在facebook上提供这些信息时,代码就会失败。用try-and-catch包装java.lang.NullPointerException的代码

哪个userInfo.append?我想说这里的user.getProperty(“locale”)可能出于某种原因返回null。不过我还没试过。我只是快速浏览了一下这个问题:)在这里添加您的日志。@Sajmon-添加logcat@Kap-这是任何userInfo.append。如果我注释掉第一行,下一行就失败了。嗯……闻起来像并发问题……它不可能那样失败……嘿,对不起,卡普,在测试你的建议时,我实际上在不知不觉中注释掉了有问题的代码行,所以当我确认你的解决方案时,我跳过了枪。
03-16 17:59:18.154: W/dalvikvm(1189): threadid=1: thread exiting with uncaught exception (group=0x40a13300)
03-16 17:59:18.204: E/AndroidRuntime(1189): FATAL EXCEPTION: main
03-16 17:59:18.204: E/AndroidRuntime(1189): java.lang.NullPointerException
03-16 17:59:18.204: E/AndroidRuntime(1189):     at net.myname.myapp.MainFragment.buildUserInfoDisplay(MainFragment.java:84)
03-16 17:59:18.204: E/AndroidRuntime(1189):     at net.myname.myapp.MainFragment.access$2(MainFragment.java:56)
03-16 17:59:18.204: E/AndroidRuntime(1189):     at net.myname.myapp.MainFragment$2.onCompleted(MainFragment.java:125)
03-16 17:59:18.204: E/AndroidRuntime(1189):     at com.facebook.Request$1.onCompleted(Request.java:264)
03-16 17:59:18.204: E/AndroidRuntime(1189):     at com.facebook.Request$4.run(Request.java:1240)
03-16 17:59:18.204: E/AndroidRuntime(1189):     at android.os.Handler.handleCallback(Handler.java:615)
03-16 17:59:18.204: E/AndroidRuntime(1189):     at android.os.Handler.dispatchMessage(Handler.java:92)
03-16 17:59:18.204: E/AndroidRuntime(1189):     at android.os.Looper.loop(Looper.java:137)
03-16 17:59:18.204: E/AndroidRuntime(1189):     at android.app.ActivityThread.main(ActivityThread.java:4745)
03-16 17:59:18.204: E/AndroidRuntime(1189):     at java.lang.reflect.Method.invokeNative(Native Method)
03-16 17:59:18.204: E/AndroidRuntime(1189):     at java.lang.reflect.Method.invoke(Method.java:511)
03-16 17:59:18.204: E/AndroidRuntime(1189):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
03-16 17:59:18.204: E/AndroidRuntime(1189):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
03-16 17:59:18.204: E/AndroidRuntime(1189):     at dalvik.system.NativeStart.main(Native Method)
03-16 17:59:18.354: D/dalvikvm(1189): GC_CONCURRENT freed 423K, 6% free 8428K/8903K, paused 107ms+76ms, total 316ms