2013-10-28 24 views
7

HATA: CursorWrapperInner (10908): Uygulamamda çalışmak için facebook kodu almak için çalışıyorumFacebook android parçası giriş

önceki kapanışta() olmadan kesinleşmiş İmleç. Bazı nedenlerden ötürü örnekler bu hatayı alıyor mu? Nedenini bilmiyorum, ama yukarıda belirttiğim aynı hatayı aldığım parçam.

kodu:

package com.fragments; 

public class MainDisplayFragment extends Fragment { 

    private static final String TAG = "MainFragment"; 
    private UiLifecycleHelper uiHelper; 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
     // Inflate the layout for this fragment 
     View view = inflater.inflate(R.layout.main_display_fragment, container, 
       false); 

     uiHelper = new UiLifecycleHelper(this.getActivity(), callback); 
     uiHelper.onCreate(savedInstanceState); 

     // Facebook login button. 
     LoginButton authButton = (LoginButton) view 
       .findViewById(R.id.authButton); 
     authButton.setFragment(this); 
     // Set Application ID. 
     authButton.setReadPermissions(Arrays.asList("user_friends", 
       "user_about_me", "user_birthday", "user_likes", "user_status")); 

     return view; 
    } 

    private void onSessionStateChange(Session session, SessionState state, 
      Exception exception) { 
     if (state.isOpened()) { 
      Log.i(TAG, "Logged in..."); 
     } else if (state.isClosed()) { 
      Log.i(TAG, "Logged out..."); 
     } 
    } 

    private Session.StatusCallback callback = new Session.StatusCallback() { 
     @Override 
     public void call(Session session, SessionState state, 
       Exception exception) { 
      onSessionStateChange(session, state, exception); 
     } 
    }; 

    @Override 
    public void onResume() { 
     super.onResume(); 
     uiHelper.onResume(); 
    } 

    @Override 
    public void onActivityResult(int requestCode, int resultCode, Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 
     uiHelper.onActivityResult(requestCode, resultCode, data); 

    } 

    @Override 
    public void onPause() { 
     super.onPause(); 
     uiHelper.onPause(); 
    } 

    @Override 
    public void onDestroy() { 
     super.onDestroy(); 
     uiHelper.onDestroy(); 
    } 

    @Override 
    public void onSaveInstanceState(Bundle outState) { 
     super.onSaveInstanceState(outState); 
     uiHelper.onSaveInstanceState(outState); 
    } 
} 
+0

Eğer Aktivite içine bu kodu denediniz mi? Bu ne için? 'authButton.setFragment (this);' Kullanıcı durumunu almak için paylaşılan tercihleri ​​denediniz mi? Herhangi bir 'geri arama' herhangi biri için boş değer döndürüyor mu? –

+0

Yorumunuzdan önce bunu bir süredir sabitledim, daha önce hiç yayınlamadığım için özür dilerim. Benzer sorunları olan herkes için aşağıya bakın. – thekevshow

cevap

0

benim sorunun cevabı etkinliğe etkileşimi hareketli geldi. Bu şekilde, ana faaliyetlerimizdeki oturum durumlarını izleyebiliriz. Ne yazık ki, belgelere göre gerekli olmamalıydı, ancak bu, devam eden problemleri olan kişiler için kullanıyorum.

KODU:

// session callback status 
    private Session.StatusCallback callback = new Session.StatusCallback() { 
     @Override 
     public void call(Session session, SessionState state, 
       Exception exception) { 

      onSessionStateChange(session, state, exception); 
     } 
    }; 

    // on click listener for the login button 
    public OnClickListener loginButtonListener = new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 

      // call the handler 
      onLoginButtonClick(); 

     } 
    }; 

    // session callback 
    public void onLoginButtonClick() { 

     Session session = Session.getActiveSession(); 
     if (!session.isOpened() && !session.isClosed()) { 
      session.openForRead(new Session.OpenRequest(this) 
        .setCallback(callback)); 
     } else { 
      Session.openActiveSession(this, true, callback); 
     } 

    } 

    public void intializeSession(Bundle savedInstanceState) { 

     // initialize the facebook session 
     Session session = Session.getActiveSession(); 
     if (session == null) { 
      if (savedInstanceState != null) { 
       session = Session.restoreSession(this, null, callback, 
         savedInstanceState); 
      } 
      if (session == null) { 
       session = new Session(this); 
      } 
      Session.setActiveSession(session); 
      if (session.getState().equals(SessionState.CREATED_TOKEN_LOADED)) { 
       session.openForRead(new Session.OpenRequest(this) 
         .setCallback(callback)); 
      } 
     } 

    } 

    private void onSessionStateChange(Session session, SessionState state, 
      Exception exception) { 

     // IF the session is opened 
     if (session.isOpened()) { 

      //TODO YOUR INTERACTIONS HERE WHEN OPEN 

     } 
     // else IF there session is closed 
     else if (session.isClosed()) { 

      // TODO YOUR INTERACTIONS HERE WHEN CLOSED 

     } 
    } 
İlgili konular