Recuperando nome de usuário e sexo do Facebook no android

É assim que recupero as informações armazenadas em preferência compartilhada e depois comparo se existe nome de usuário e senha. Se o usuário estiver conectado, posso mostrar outra atividade.

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

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


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

Mas agora estou tentando recuperar o nome de usuário e o sexo do usuário e exibir na minha atividad

Estou tentando resolver isso, mas ainda não encontrei o resultado convincente.

Alguém pode me ajudar a sair da minha exigência?

Nota: Também estou vendo os documentos da página do desenvolvedor do Facebook

Este é o código que estou usando para recuperar os dados do usuário e exibir em outra atividade. O que estou enfrentando é o layout ser carregado antes que a resposta do facebook seja comparada. Eu suspeito que seja por causa do uso do mAsyncRunner, pois ele assume o controle por conta própria. O que estou tentando descobrir é como analisá-lo antes que o layout seja carregad

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;
    }


}

Alguém pode me ajudar, por favor

questionAnswers(1)

yourAnswerToTheQuestion