我有一个活动,其中包含一些用于自创登录系统的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);
}
});
}
}
如果您需要更多代码,请与我们联系。
答案 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);
}
});