java - 尝试调用虚拟方法“java.lang.CharSequence android.widget.TextView.getText()”
问题描述
我正在尝试使用电子邮件和密码在 Android Studio 3.1.4 中创建一个 Firebase 身份验证应用程序,但是当我单击注册按钮时,它会使应用程序崩溃并显示以下摘要。
MainActivity.java
package com.example.vatsal2416.firebaseauth;
import android.app.Activity;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.AuthResult;
import com.google.firebase.auth.FirebaseAuth;
public class MainActivity extends Activity {
private FirebaseAuth mAuth;
@Override
protected void onCreate(Bundle savedInstanceState) {
final TextView textEmail = findViewById(R.id.et1);
final TextView textPassword= findViewById(R.id.et2);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//Initialize buttons
Button btn_Login = findViewById(R.id.login);
Button btn_regsiter = findViewById(R.id.register);
//intialize Firebase Authentication
mAuth = FirebaseAuth.getInstance();
btn_Login.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
methodLogin(textEmail.getText().toString(),textPassword.getText().toString());
}
});
btn_regsiter.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
methodRegister(textEmail.getText().toString(),textPassword.getText().toString());
}
});
}
public void methodRegister(String email, String password){
mAuth.createUserWithEmailAndPassword(email, password)
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
Toast.makeText(getApplicationContext(), "Authentication Successful", Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(getApplicationContext(), "Authentication Successful", Toast.LENGTH_SHORT).show();
}
}
});
}
public void methodLogin(String email, String password){
mAuth.signInWithEmailAndPassword(email, password)
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
Toast.makeText(getApplicationContext(), "Authentication Successful", Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(getApplicationContext(), "Authentication Successful", Toast.LENGTH_SHORT).show();
}
}
});
}
}
项目的Github链接
谁能告诉我代码中到底有什么问题。
解决方案
利用
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final TextView textEmail = findViewById(R.id.et1);
final TextView textPassword= findViewById(R.id.et2);
代替
final TextView textEmail = findViewById(R.id.et1);
final TextView textPassword= findViewById(R.id.et2);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
推荐阅读
- typescript - 在angular2中一次启用一个复选框
- c# - 在 Where & Select 中作为可枚举的动态字段
- terraform - 无法使用 user_data 执行脚本
- maven - 如何创建私有 Maven 存储库的镜像?
- javascript - 在布尔掩码上分散数组值的优雅方法
- paypal - 带有编码用户 ID 的 PayPal 付款
- mercurial - 构建失败,因为 repo pull 失败,存储库存在或超时等待锁定
- grails - Grails:相同的 URL 映射到每个不同 HTTP 方法的不同操作
- python - 记录鸭子类型的 Python 参数
- json - 使用 Angular 5 在 Mac OS 上下载/导出 json 文件