我正在使用Android Facebook SDK(4.01)通过Facebook登录我的应用程序。从我的MainActivity登录facebook成功,然后我使用Intent来进行下一个活动。那部分有效。
之后在我的新活动(MainLobby)中,我希望能够从Facebook注销并返回到我之前的MainActivity,按下后退按钮。出于某种原因,当我按回MainLobby关闭时,但其后面还有另一个MainLobby活动。因此,我必须按两次按钮才能返回MainActivity。那是为什么?
主要活动类代码:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
FacebookSdk.sdkInitialize(getApplicationContext());
setContentView(R.layout.main_activity);
fbloginBT = (LoginButton) findViewById(R.id.fbloginBT);
callback = CallbackManager.Factory.create();
fbloginBT.registerCallback(callback, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
System.out.println("onSuccess");
Intent mainLobby = new Intent(MainActivity.this, MainLobby.class);
startActivity(mainLobby);
}
@Override
public void onCancel() {
System.out.println("onCancel");
}
@Override
public void onError(FacebookException e) {
System.out.println("onError");
}
});
fbloginBT.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
LoginManager.getInstance().logInWithReadPermissions(MainActivity.this, Arrays.asList("public_profile"));
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
callback.onActivityResult(requestCode, resultCode, data);
}
主要大堂课程代码:
@Override
public void onBackPressed() {
if (mDrawerLayout.isDrawerOpen(Gravity.LEFT))
mDrawerLayout.closeDrawer(Gravity.LEFT);
else if (searchView.isShown() && !isClosed){
searchView.onActionViewCollapsed(); //collapse your ActionView
searchView.setQuery("", false); //clears your query without submit
isClosed = true;
}
else {
LoginManager.getInstance().logOut();
super.onBackPressed();
}
}
更新:
我在Android Studio中的模拟器上工作正常。当我在Android手机设备上测试时,它的工作原理如上所述。
答案 0 :(得分:1)
试试这个:
private boolean isMainLobbyStarted = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
FacebookSdk.sdkInitialize(getApplicationContext());
setContentView(R.layout.main_activity);
fbloginBT = (LoginButton) findViewById(R.id.fbloginBT);
callback = CallbackManager.Factory.create();
fbloginBT.registerCallback(callback, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
System.out.println("onSuccess");
Intent mainLobby = new Intent(MainActivity.this, MainLobby.class);
if(!isMainLobbyStarted) {
startActivity(mainLobby);
isMainLobbeyStarted = true;
}
}
@Override
public void onCancel() {
System.out.println("onCancel");
}
@Override
public void onError(FacebookException e) {
System.out.println("onError");
}
});
fbloginBT.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
LoginManager.getInstance().logInWithReadPermissions(MainActivity.this, Arrays.asList("public_profile"));
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
callback.onActivityResult(requestCode, resultCode, data);
}
答案 1 :(得分:0)
按如下所示更新您的代码并尝试
@Override
public void onBackPressed() {
if (mDrawerLayout.isDrawerOpen(Gravity.LEFT))
mDrawerLayout.closeDrawer(Gravity.LEFT);
else if (searchView.isShown() && !isClosed){
searchView.onActionViewCollapsed(); //collapse your ActionView
searchView.setQuery("", false); //clears your query without submit
isClosed = true;
}
LoginManager.getInstance().logOut();
super.onBackPressed();
}