Recuperando nombre de usuario y género de Facebook en Android

Así es como recupero la información almacenada en preferencia compartida y luego comparo si existe nombre de usuario y contraseña. Si el usuario ha iniciado sesión, puedo mostrar otra actividad.

SharedPreferences settings = getSharedPreferences ("logindetails", 0);

    String username = settings.getString("username", "");


    String password = settings.getString("password", "");

Pero ahora estoy tratando de recuperar el nombre de usuario y el género del usuario y mostrarlos en mi actividad.

stoy tratando de resolver esto, pero aún no he encontrado el resultado convincente.

¿Alguien puede ayudarme a salir de mi requerimiento?

Nota: También estoy viendo los documentos de la página del desarrollador de Facebook

Este es el código que estoy usando para recuperar los datos del usuario y mostrarlos en otra actividad. El problema al que me enfrento es que el diseño se carga antes de que se acorte la respuesta de Facebook. Sospecho que se debe al uso de mAsyncRunner, ya que toma el control por sí solo. Lo que estoy tratando de descubrir es dos para analizar antes de cargar el diseño.

public class FaceBookRetrieval extends Activity{


this.facebookConnector = new FacebookConnect(APP_ID, this,
                getApplicationContext(), PERMS);

}

public class FacebookConnect {

    public FacebookConnect fb = null;
    private Facebook facebook = null;
    private Context context;
    private String[] permissions;
    public static final String TAG = "FACEBOOK";
    private AsyncFacebookRunner mAsyncRunner;
    private SharedPreferences sharedPrefs;
    private ProgressBar pb;
    public  String fbName, fbGender;
    private Activity activity;
    public String check = "false";
    private SessionListener mSessionListener = new SessionListener();;

    public FacebookConnect(String appId, Activity activity, Context context,
            String[] permissions) {
        this.facebook = new Facebook(appId);
        mAsyncRunner = new AsyncFacebookRunner(facebook);
        SessionStore.restore(facebook, context);
        SessionEvents.addAuthListener(mSessionListener);
        SessionEvents.addLogoutListener(mSessionListener);

        this.context = context;
        this.permissions = permissions;
        this.activity = activity;
    }

    public void login() {
        if (!facebook.isSessionValid()) {
            facebook.authorize(this.activity, this.permissions,
                    new LoginDialogListener());
        }
    }

    public void getID() {

            login();


        return;
    }

    public boolean isSession() {
        sharedPrefs = PreferenceManager.getDefaultSharedPreferences(context);
        String access_token = sharedPrefs.getString("access_token", "x");
        Long expires = sharedPrefs.getLong("access_expires", -1);
        Log.d(TAG, access_token);
        facebook.setAccessToken(null);
        facebook.setAccessExpires(-1);

        if (access_token != null && expires != -1) {
//          facebook.setAccessToken(access_token);
//          facebook.setAccessExpires(expires);



        }

        return facebook.isSessionValid();
    }



    // request the facebook to provide the response and then parse the response to 
    // obtain username and gender
    private class IDRequestListener implements RequestListener {

        @Override
        public void onComplete(String response, Object state) {
            try {

                Log.d(TAG, "Response: " + response.toString());
                JSONObject json = Util.parseJson(response);
                fbGender = json.getString("gender");
                fbName = json.getString("name");
                check = "true";

            } catch (JSONException e) {
                Log.d(TAG, "JSONException: " + e.getMessage());
            } catch (FacebookError e) {
                Log.d(TAG, "FacebookError: " + e.getMessage());
            }
            Toast.makeText(context, "hello", Toast.LENGTH_SHORT).show();
            FacebookConnect.this.runOnUiThread(new Runnable() {
                public void run() {
                    pb.setVisibility(ProgressBar.VISIBLE);
                }
            });
            return ;
        }

        @Override
        public void onIOException(IOException e, Object state) {
            Log.d(TAG, "IOException: " + e.getMessage());
        }

        @Override
        public void onFacebookError(FacebookError e, Object state) {
            Log.d(TAG, "FacebookError: " + e.getMessage());
        }

        @Override
        public void onFileNotFoundException(FileNotFoundException e,
                Object state) {

        }

        @Override
        public void onMalformedURLException(MalformedURLException e,
                Object state) {

        }

    }

    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        facebook.authorizeCallback(requestCode, resultCode, data);
    }

    public void runOnUiThread(Runnable runnable) {
    }



    private class LoginDialogListener implements DialogListener {

        @Override
        public void onComplete(Bundle values) {

            String token = facebook.getAccessToken();
            long token_expires = facebook.getAccessExpires();
            Log.d(TAG, "AccessToken: " + token);
            Log.d(TAG, "AccessExpires: " + token_expires);
            sharedPrefs = PreferenceManager
                    .getDefaultSharedPreferences(context);
            sharedPrefs.edit().putLong("access_expires", token_expires).clear()
                    .commit();
            sharedPrefs.edit().putString("access_token", token).clear().commit();
            mAsyncRunner.request("me", new IDRequestListener());
            Toast.makeText(context, "You are logged in", Toast.LENGTH_SHORT).show();

            return;
        }

        @Override
        public void onCancel() {
            Log.d(TAG, "OnCancel");
        }

        @Override
        public void onFacebookError(FacebookError e) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onError(DialogError e) {
            // TODO Auto-generated method stub

        }
    }

    private class SessionListener implements AuthListener, LogoutListener {

        public void onAuthSucceed() {
            SessionStore.save(facebook, context);
        }

        public void onAuthFail(String error) {
        }

        public void onLogoutBegin() {
        }

        public void onLogoutFinish() {
            SessionStore.clear(context);
        }
    }

    public Facebook getFacebook() {
        return this.facebook;
    }


}

¿Alguien puede ayudarme?

Respuestas a la pregunta(1)

Su respuesta a la pregunta