首页 > 解决方案 > 尝试调用虚拟方法“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链接

https://github.com/vatsal2416/loginExample

谁能告诉我代码中到底有什么问题。

标签: javaandroidnullpointerexception

解决方案


利用

    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);

推荐阅读