在我的Android应用中,我使用方法
进行Google plus登录活动@Override
public void onConnected(Bundle connectionHint) {
String accountName = mPlusClient.getAccountName();
Toast.makeText(this, accountName + " is connected.", Toast.LENGTH_LONG).show();
...
Intent userDetailsCaptureIntent = new Intent(this,UserDetailsCaptureActivity.class);
startActivity(userDetailsCaptureIntent);
}
在用户登录后的此方法中,我启动UserDetailsCaptureActivity
,其中收集有关用户的详细信息并存储在Google App Engine后端。问题出在我输入详细信息并保存后我不要让Activity再次启动,但它会启动,因为我一直称它为onConnected()
方法。如何让使用onConnected方法的Activity知道UserDetailsCaptureActivity
只应该被调用一次?如果这令人困惑,我愿意进一步解释。
答案 0 :(得分:3)
当用户在UserDetailsCaptureActivity.java中填写这些用户数据时,将这些用户数据保存在SharedPreference中。
userDetailsPrefEditor.putString("user_name", userName).commit();
然后在每次成功登录后,您需要检查数据是否已存在于SharedPreference中。
userName = userDetailsPrefEditor.getString("user_name", "default");
if (userName == "default")
{
//start activity for capturing details
}
else
{
//do something else
}
希望这有帮助。
答案 1 :(得分:0)
按照@ MysticMaggic的回答,我终于得到了它的工作。为了将来的参考,这就是我做的:
在onCreate(Bundle savedInstanceState)
类的UserDetailsCaptureActivity.java
方法中(我想保存sharedPreferences)我做了
SharedPreferences userDetailsPrefEditor = getApplicationContext().getSharedPreferences("MyPref", MODE_PRIVATE);
final Editor editor = userDetailsPrefEditor.edit();
final Intent userProfileDisplayIntent = new Intent(this, UserProfileActivity.class);
submitButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(v.getId() == R.id.userDetailsCaptureButton) {
new EndpointsTask().execute(getApplicationContext());
editor.putBoolean("hasSetDetails", true);
editor.commit();
startActivity(userProfileDisplayIntent);
}
}
});
然后在我onConnected()
的{{1}}方法中(我想访问sharedPreferences并检查用户是否已经输入了他们的详细信息)我这样做了
LoginActivity
就是这样。