Android在同一活动中使用Facebook登录和EditText?

时间:2014-07-26 06:34:02

标签: android android-edittext facebook-login

我有一个活动,其中包含一些用于自创登录系统的EditText,并且我还包括一个Facebook登录按钮。当我从活动中注释掉下面的FB代码部分时,我能够检索EditTexts的值。但是,使用FB代码时,所有EditText值都会返回空。这是为什么?

public class LoginActivity extends FragmentActivity
{
  private EditText mEmailRegisterView;
  private EditText mPasswordRegisterView;
  private EditText mPasswordConfirmRegisterView;

  @Override
  protected void onCreate(Bundle savedInstanceState)
  {
    super.onCreate(savedInstanceState);

    // Set FB fragment
    // Commenting this if/else allows the EditText values to be obtained.
    if (savedInstanceState == null)
    {
      // Add the fragment on initial activity setup
      loginFragment = new LoginFragment();
      getSupportFragmentManager().beginTransaction()
        .add(android.R.id.content, loginFragment).commit();
    }
    else
    {
      // Or set the fragment from restored state info
      loginFragment = (LoginFragment) getSupportFragmentManager().findFragmentById(
      android.R.id.content);
    }
    ...
    // Get the register EditText objects
    mEmailRegisterView = (EditText) findViewById(R.id.login_activity_email_register);
    mPasswordRegisterView = (EditText) findViewById(R.id.login_activity_password_register);
    mPasswordConfirmRegisterView = (EditText) findViewById(R.id.login_activity_password_confirm_register);

    Button registerButton = (Button) findViewById(R.id.register_button);
    registerButton.setOnClickListener(new View.OnClickListener() {
      public void onClick(View view)
      {
        // Store values at the time of the login attempt.
        mEmailRegister = mEmailRegisterView.getText().toString();
        mPasswordRegister = mPasswordRegisterView.getText().toString();
        mPasswordConfirmRegister = mPasswordConfirmRegisterView.getText().toString();

        // These are all empty
        Log.d(TAG, "Email    : " + mEmailRegister);
        Log.d(TAG, "Password : " + mPasswordRegister);
        Log.d(TAG, "Confirm  : " + mPasswordConfirmRegister);
      }
    });
  }
}

如果您需要更多代码,请与我们联系。

1 个答案:

答案 0 :(得分:0)

这是因为你在登录尝试时存储值。并且在存储值之后再次使用onClick方法分配您的edittext。因此只在{{初始化editext一次1}}方法而不是onCreate方法,因为 editext是活动布局的一部分,并且在registerButton onClick方法中将为null,即改变

onClick

  registerButton.setOnClickListener(new View.OnClickListener() {
    public void onClick(View view)
    {
      // Get the current register EditText objects
      mEmailRegisterView = (EditText) findViewById(R.id.login_activity_email_register);
      mPasswordRegisterView = (EditText) findViewById(R.id.login_activity_password_register);
      mPasswordConfirmRegisterView = (EditText) findViewById(R.id.login_activity_password_confirm_register);

      // Store values at the time of the login attempt.
      mEmailRegister = mEmailRegisterView.getText().toString();
      mPasswordRegister = mPasswordRegisterView.getText().toString();
      mPasswordConfirmRegister = mPasswordConfirmRegisterView.getText().toString();

      Log.d(TAG, "Email    : " + mEmailRegister);
      Log.d(TAG, "Password : " + mPasswordRegister);
      Log.d(TAG, "Confirm  : " + mPasswordConfirmRegister);
    }
  });

在活动方法

中仅定义一次edittext(在行下方)
  registerButton.setOnClickListener(new View.OnClickListener() {
    public void onClick(View view)
    {
    // Store values at the time of the login attempt.
      mEmailRegister = mEmailRegisterView.getText().toString();
      mPasswordRegister = mPasswordRegisterView.getText().toString();
      mPasswordConfirmRegister = mPasswordConfirmRegisterView.getText().toString();

      Log.d(TAG, "Email    : " + mEmailRegister);
      Log.d(TAG, "Password : " + mPasswordRegister);
      Log.d(TAG, "Confirm  : " + mPasswordConfirmRegister);
    }
  });