To come in

ERROR: CursorWrapperInner (10908): cursor completed without first closing ()

I am trying to get facebook code to work with my application. For some reason, even samples get this error? I don’t know why, but here is my fragment to which I get the same error as above.

the code:

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); } } 
+7
android facebook android-fragments
source share
1 answer

The answer to my problem was related to moving the interaction to activity. Thus, we could control the state of the session as part of our core business. Unfortunately, according to the documentation, this should not have been necessary, but this is the fix that I used for those who have problems.

CODE:

 // 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 } } 
0
source share

All Articles