尝试调用虚拟方法'java.lang.CharSequence android.widget.TextView.getText()'

时间:2018-08-11 16:13:18

标签: java android nullpointerexception

我正在尝试使用电子邮件和密码在Android Studio 3.1.4中创建Firebase身份验证应用程序,但是当我单击注册按钮时,它会崩溃并显示以下摘要。 Error when the app crashes.

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

任何人都可以告诉我代码中实际上有什么问题。

1 个答案:

答案 0 :(得分:1)

使用

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