2013-08-18 16 views
2

我用com.facebook.widget.UserSettingsFragment來管理我的應用程序登錄/註銷Facebook的前:的Android的Facebook SDK UserSettingsFragment崩潰暫停時完成其任務

UserSettingsFragment userSettingsFragment = new UserSettingsFragment(); 
Session session = Session.getActiveSession(); 
if(session==null || session.isClosed()){ 
    userSettingsFragment.setPublishPermissions(Arrays.asList("publish_actions")); 
} 
fragmentTransaction.replace(R.id.content_container, userSettingsFragment, "userSettingsFragment"); 

它似乎正確登錄/註銷,但是當我開始這個Fragment當我已經記錄並暫停時(例如,通過替換Fragment),它崩潰。看起來它有一些線程在運行,當它結束時,它需要Activity,它不再存在,所以它崩潰了。

它看起來像是一個錯誤,或者我錯過了什麼?

08-18 12:16:58.345: E/AndroidRuntime(18068): java.lang.IllegalStateException: Fragment UserSettingsFragment{420c3a08} not attached to Activity 
08-18 12:16:58.345: E/AndroidRuntime(18068): at android.support.v4.app.Fragment.getResources(Fragment.java:579) 
08-18 12:16:58.345: E/AndroidRuntime(18068): at com.facebook.widget.UserSettingsFragment.processImageResponse(UserSettingsFragment.java:383) 
08-18 12:16:58.345: E/AndroidRuntime(18068): at com.facebook.widget.UserSettingsFragment.access$7(UserSettingsFragment.java:379) 
08-18 12:16:58.345: E/AndroidRuntime(18068): at com.facebook.widget.UserSettingsFragment$2.onCompleted(UserSettingsFragment.java:370) 
08-18 12:16:58.345: E/AndroidRuntime(18068): at com.facebook.widget.ImageDownloader$1.run(ImageDownloader.java:161) 
08-18 12:16:58.345: E/AndroidRuntime(18068): at android.os.Handler.handleCallback(Handler.java:730) 
08-18 12:16:58.345: E/AndroidRuntime(18068): at android.os.Handler.dispatchMessage(Handler.java:92) 
08-18 12:16:58.345: E/AndroidRuntime(18068): at android.os.Looper.loop(Looper.java:137) 
08-18 12:16:58.345: E/AndroidRuntime(18068): at android.app.ActivityThread.main(ActivityThread.java:5103) 
08-18 12:16:58.345: E/AndroidRuntime(18068): at java.lang.reflect.Method.invokeNative(Native Method) 
08-18 12:16:58.345: E/AndroidRuntime(18068): at java.lang.reflect.Method.invoke(Method.java:525) 
08-18 12:16:58.345: E/AndroidRuntime(18068): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737) 
08-18 12:16:58.345: E/AndroidRuntime(18068): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
08-18 12:16:58.345: E/AndroidRuntime(18068): at dalvik.system.NativeStart.main(Native Method) 
+0

看起來像一個bug,請在這裏(https://developers.facebook.com/bugs)使用repro步驟將其提交。 –

+0

謝謝,我已經做到了。 – jul

回答

2

我看過類似的行爲。如果我在登錄後關閉UserSettingsFragment,但在圖像更新之前,我得到一個無活動附加崩潰。

我正在使用以下解決方法。在UserSettingsFragment.java,我修改了processImageResponse(字符型,ImageResponse響應),以檢查是否添加片段:

private void processImageResponse(String id, ImageResponse response) { 
    if (response != null && UserSettingsFragment.this.isAdded()) { 
     Bitmap bitmap = response.getBitmap(); 
     if (bitmap != null) { 
      BitmapDrawable drawable = new BitmapDrawable(UserSettingsFragment.this.getResources(), bitmap); 
      drawable.setBounds(0, 0, 
        getResources().getDimensionPixelSize(R.dimen.com_facebook_usersettingsfragment_profile_picture_width), 
        getResources().getDimensionPixelSize(R.dimen.com_facebook_usersettingsfragment_profile_picture_height)); 
      userProfilePic = drawable; 
      userProfilePicID = id; 
      connectedStateLabel.setCompoundDrawables(null, drawable, null, null); 
      connectedStateLabel.setTag(response.getRequest().getImageUri()); 
     } 
    } 
} 

更新SDK直接顯然不夠理想,但也不是讓我的應用程序崩潰:-)

+0

好找的爲我工作 – Rarw