[英]App crash when using EditText for app written in Android Studio
嘗試從 Android 中的“EditText”獲取數據時遇到問題。 當我嘗試將“EditText”值分配給 String 變量時,應用程序立即崩潰(我使用了 toString() 方法)。
問題出在 onCreate 方法之后的兩行。
這是我的代碼:
public class MainActivity extends AppCompatActivity {
EditText em;
EditText pw;
private FirebaseAuth mAuth;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
EditText em = (EditText) findViewById(R.id.email1);
EditText pw = (EditText) findViewById(R.id.password1);
mAuth = FirebaseAuth.getInstance();
}
// When I remove those two lines the app runs normally
String email = em.getText().toString();
String password = pw.getText().toString();
void login(View v){
mAuth.signInWithEmailAndPassword(email, password)
.addOnCompleteListener(MainActivity.this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
// Sign in success, update UI with the signed-in user's information
FirebaseUser user = mAuth.getCurrentUser();
String Logged = user.getEmail().toString();
Intent intent = new Intent(MainActivity.this, afterLogin.class);
intent.putExtra("email", Logged);
startActivity(intent);
finish();
} else {
// If sign in fails, display a message to the user.
Toast.makeText(MainActivity.this, "Wrong email/password.", Toast.LENGTH_SHORT).show();
}
}
});
}
}
為什么這些語句在外面?
String email = em.getText().toString();
String password = pw.getText().toString();
您正在嘗試在執行 onCreate 之前分配這些。 在類級別提取數據類似於在構造函數中執行此操作。 想想看……構造函數先運行,然后 onCreate 執行。
所以,你基本上是在跑步
null.getText().toString(); //because em and pw were still null
不要這樣做,請將這些語句移動到登錄方法或您可能想要創建的任何其他事件方法。
您在onCreate
之前聲明並初始化String email
和String password
,因此EditText
為空。 將String
初始化移動到您的onCreate
如下所示:
EditText em;
EditText pw;
String email;
String password;
onCreate {
EditText em = findViewById(R.id.email1);
EditText pw = findViewById(R.id.password1);
email = em.getText().toString;
password = pw.getText().toString;
}
當然,此時EditText
可能為空,因此您可能希望稍后獲取它們的值,或者使用TextWatcher
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.