如果已满足条件,则跳过活动的开始

时间:2014-02-11 13:24:09

标签: android

在我的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只应该被调用一次?如果这令人困惑,我愿意进一步解释。

2 个答案:

答案 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

就是这样。