我有一个片段,用户点击按钮(来自G + API)并使用该服务在他的Google服务中登录,到目前为止一直很好......
问题在于,当点击按钮时,它应该在登录过程结束后开始一个活动,但它只会(大概)在破坏活动时(可能会停止,我真的不知道)并恢复它再次,因为如果我转到菜单并再次转到应用程序,第二个活动会立即开始(或者在更改方向时,会破坏并重新创建活动)。
我知道这与onActivityResult生命周期方法有关,因为我的应用程序也有facebook登录,我使用facebook API的uiHelper,我只是没有找到一个谷歌api客户端(我不认为它存在实际上)。
修改
这是我的活动结果,如果我删除" uiHelper.onActivityresult(...)"那么我的facebook登录也会发生同样的情况。
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
uiHelper.onActivityResult(requestCode, resultCode, data);
}
当用户登录时调用
@Override
public void onConnected(Bundle bundle) {
mSignInClicked = false;
// Get user's information
getProfileInformation();
}
这是getProfileInformation,它填充我用于我的应用程序的对象(是一个简单的提醒应用程序)
private void getProfileInformation(){
try {
if (Plus.PeopleApi.getCurrentPerson(mGoogleApiClient) != null) {
RemindersUser.IS_FB_USER =false;
Person currentPerson = Plus.PeopleApi.getCurrentPerson(mGoogleApiClient);
String personName = currentPerson.getDisplayName();
String personPhotoUrl = currentPerson.getImage().getUrl();
personPhotoUrl = personPhotoUrl.substring(0,personPhotoUrl.length() - 2)+ PROFILE_PIC_SIZE;
String personGooglePlusId = currentPerson.getId();
String email = Plus.AccountApi.getAccountName(mGoogleApiClient);
mRemindersUser =new RemindersUser(
personName,
email,
personPhotoUrl,
personGooglePlusId);
Intent viewPagerIntent = new Intent(getActivity().getApplicationContext(), ViewPagerActivity.class);
viewPagerIntent.putExtra(RemindersUser.USERNAME, mRemindersUser.getName());
viewPagerIntent.putExtra(RemindersUser.MAIL, mRemindersUser.getMail());
viewPagerIntent.putExtra(RemindersUser.IMAGE, mRemindersUser.getImage());
viewPagerIntent.putExtra(RemindersUser.USER_ID, mRemindersUser.getUserId());
startActivity(viewPagerIntent);
} else {
Toast.makeText(getActivity(),"Person information is null", Toast.LENGTH_LONG).show();
}
} catch (Exception e) {
e.printStackTrace();
}
答案 0 :(得分:0)
解决:
我正在管理Google+连接的生命周期错误,在下面进行一个抽象级别比我应该做的那样,我开始管理来自活动的连接,而不是来自片段,一切正常。