2017-06-20 3 views
0

Facebookのフィールドをクリアできません。画像、名前、性別を示しました。 Facebooklogoutボタンをクリックすると、この3つのフィールドをクリアします。誰もこの上で私を助けることができますか? FBログアウト関数を呼び出し、トークン、現在アクセスしよう:アンドロイドのログアウト後にFacebookのフィールド(画像、名前、性別)をクリアするには

パブリッククラスMainActivityでは、次のコードを使用することができますログアウトするAppCompatActivity {

private LoginButton loginButton; 
private CallbackManager callbackManager; 
private ProfilePictureView profilePictureView; 
private LinearLayout infoLayout; 
private TextView email; 
private TextView gender; 
private TextView username; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

/*We have to initialize before using any methods with sdkIntialise()*/ 
    FacebookSdk.sdkInitialize(MainActivity.this); 

    loginButton = (LoginButton) findViewById(R.id.login_button); 
    email = (TextView) findViewById(R.id.email); 
    gender = (TextView) findViewById(R.id.gender); 
    username = (TextView) findViewById(R.id.vname); 

    infoLayout = (LinearLayout) findViewById(R.id.layout_info); 
    infoLayout.setVisibility(View.GONE); 
    profilePictureView = (ProfilePictureView) findViewById(R.id.vimage); 
    loginButton.setReadPermissions(Arrays.asList("public_profile, email, user_birthday")); 

    /*initialize an instance of CallbackManager*/ 
    callbackManager = CallbackManager.Factory.create(); 

    loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() { 
     @Override 
     public void onSuccess(LoginResult loginResult) { 
      GraphRequest graphRequest = GraphRequest.newMeRequest(loginResult.getAccessToken(), new GraphRequest.GraphJSONObjectCallback() { 
       @Override 
       public void onCompleted(JSONObject object, GraphResponse response) { 
        setProfileView(object); 
       } 
      }); 

      Bundle parameters = new Bundle(); 
      parameters.putString("fields", "id,name,email,gender,birthday"); 
      graphRequest.setParameters(parameters); 
      graphRequest.executeAsync(); 
     } 

     @Override 
     public void onCancel() { 

     } 

     @Override 
     public void onError(FacebookException error) { 
      Toast.makeText(MainActivity.this, "Error to Login Facebook", Toast.LENGTH_SHORT).show(); 
     } 
    }); 

} 


@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    callbackManager.onActivityResult(requestCode, resultCode, data); 
} 

private void setProfileView(JSONObject object) { 

    try { 
     email.setText(object.getString("email")); 
     gender.setText(object.getString("gender")); 
     username.setText(object.getString("name")); 

     profilePictureView.setPresetSize(ProfilePictureView.NORMAL); 
     profilePictureView.setProfileId(object.getString("id")); 
     infoLayout.setVisibility(View.VISIBLE); 
    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 
} 

}

+0

はちょうどこの答えhttps://stackoverflow.com/questionsをチェックホープ/ 30039232/listen-for-facebook-logout-with-loginbutton-4-1 – RameshJaga

答えて

1

こんにちはを拡張します。

あなたがレイアウトを更新するか、次のコードを必要とする同じ活動を開始する必要がログアウトした後
> if (AccessToken.getCurrentAccessToken() != null) { 
>  LoginManager.getInstance().logOut(); 
> } 

Intent openMainActivity = new Intent(MainActivity.this, MainActivity.class);openMainActivity.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK|Intent.FLAG_ACTIVITY_NEW_TASK); 
    startActivity(openMainActivity); 

はそれが

+0

しかし、私はUIのフィールドをクリアしたい、私はFacebookのフィールドの画像、名前、電子メール、IDを表示しています。ログインをクリックすると、これらのフィールドがすべて表示されます。しかし、ログアウトすると、必要な情報が表示されています。フィールドをクリアするにはどうすればよいですか? – Sunder

+0

フラグを使用して意図を介して活動を再開します。clear_task new_task –

+0

私は1つの活動だけを使用しています。 – Sunder

関連する問題