2013-10-28 18 views
7

त्रुटि: CursorWrapperInner (10908): कर्सर से पहले करीब()फेसबुक एंड्रॉयड टुकड़ा लॉगिन

मैं अपने अनुप्रयोग के साथ काम करने के लिए फेसबुक कोड प्राप्त करने की कोशिश कर रहा है बिना अंतिम रूप दिया। कुछ कारणों से भी नमूने को यह त्रुटि मिलती है? मुझे नहीं पता क्यों, लेकिन यहां मेरा टुकड़ा है जिसके लिए मुझे ऊपर बताए गए एक ही त्रुटि मिलती है।

कोड:

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

आप गतिविधि के अंदर इस कोड की कोशिश की? यह किस लिए है? 'authButton.setFragment (यह);' क्या आपने उपयोगकर्ता स्थिति को पुनर्प्राप्त करने के लिए साझा प्राथमिकताओं को आजमाया है? क्या किसी भी संभावना के लिए 'कॉलबैक' रिटर्न शून्य मूल्य है? –

+0

मैंने आपकी टिप्पणी से कुछ समय पहले यह तय किया है, मैं जल्द से जल्द पोस्ट करने के लिए क्षमा चाहता हूं। सभी मुद्दों के लिए नीचे देखो। – thekevshow

उत्तर

0

मेरी समस्या का जवाब गतिविधि के लिए बातचीत चलती से आया है। इस तरह हम अपने मुख्य गतिविधि के भीतर सत्र राज्यों की निगरानी कर सकते हैं। दुर्भाग्यवश, दस्तावेज़ीकरण के मुताबिक यह जरूरी नहीं होना चाहिए था, लेकिन यह वह समस्या है जिसका उपयोग मैंने लगातार समस्याओं वाले लोगों के लिए किया था।

कोड:

// 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 

     } 
    } 
संबंधित मुद्दे