Android Studio:尝试在空对象引用错误 [duplicate] 上调用虚拟方法

Android Studio Attempt to invoke virtual method on a null object reference error [duplicate]

提问人:RMaster 121 提问时间:9/20/2019 最后编辑:RMaster 121 更新时间:9/20/2019 访问量:1478

问:

我的 LoginNew 活动有问题。当我单击“Zaloguj się”按钮(id LogIn)时,应用程序停止工作。 显示错误。java.lang.NullPointerException: Attempt to invoke virtual method 'android.text.Editable android.widget.EditText.getText()' on a null object reference

错误:

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.zapp4, PID: 23951
    java.lang.NullPointerException: Attempt to invoke virtual method 'android.text.Editable android.widget.EditText.getText()' on a null object reference
        at com.example.zapp4.LoginNew.userLogin(LoginNew.java:61)
        at com.example.zapp4.LoginNew.onClick(LoginNew.java:120)
        at android.view.View.performClick(View.java:6294)
        at android.view.View$PerformClick.run(View.java:24770)
        at android.os.Handler.handleCallback(Handler.java:790)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:164)
        at android.app.ActivityThread.main(ActivityThread.java:6494)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
Process 23951 terminated.

登录新.java代码:

package com.example.zapp4;
import android.content.Intent;


import android.os.Bundle;
import android.util.Patterns;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.cardview.widget.CardView;

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;
import com.google.firebase.auth.FirebaseAuthUserCollisionException;

public class LoginNew extends AppCompatActivity implements View.OnClickListener {

    FirebaseAuth mAuth;
    EditText EditTextUsername;
    EditText EditTextPassword;
    ProgressBar progressBar;
    Button Przyciskzaloguj;
    ImageView zcoinimage;
    TextView zcoinnumber;
    CardView LogIn;



    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login_new);

        mAuth = FirebaseAuth.getInstance();
        EditTextUsername = (EditText) findViewById(R.id.EditTextUsernameedit);
        EditTextPassword = (EditText) findViewById(R.id.EditTextPasswordedit);
        Przyciskzaloguj = (Button) findViewById(R.id.Przyciskzaloguj);
        zcoinnumber = (TextView) findViewById(R.id.zcoinnumber);
        zcoinimage = (ImageView) findViewById(R.id.zcoinimage);

        progressBar = findViewById(R.id.progressBar);

        LogIn = findViewById(R.id.LogIn);


        findViewById(R.id.LogIn).setOnClickListener(this);

    }

    private void userLogin() {

        String username = EditTextUsername.getText().toString();
        String password = EditTextPassword.getText().toString().trim();


        if (username.isEmpty()) {
            EditTextUsername.setError("Email jest wymagany");
            EditTextUsername.requestFocus();
            return;
        }
        if (password.isEmpty()) {
            EditTextPassword.setError("Hasło jest wymagane");
            EditTextPassword.requestFocus();
            return;
        }

        if (password.length() < 6) {
            EditTextPassword.setError("Minimalna długość hasła wynosi 6");
            EditTextPassword.requestFocus();
            return;
        }

        if (!Patterns.EMAIL_ADDRESS.matcher(username).matches()) {
            EditTextUsername.setError("Wprowadź poprawny email");
            EditTextUsername.requestFocus();
            return;
        }
        progressBar.setVisibility(View.VISIBLE);
        mAuth.signInWithEmailAndPassword(username, password).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
            @Override
            public void onComplete(@NonNull Task<AuthResult> task) {
                progressBar.setVisibility(View.GONE);
                if (task.isSuccessful()) {
                    finish();
                    Intent intent = new Intent(LoginNew.this, HomeActivity.class);
                    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                    Przyciskzaloguj.setVisibility(View.GONE);
                    zcoinnumber.setVisibility(View.VISIBLE);
                    zcoinimage.setVisibility(View.VISIBLE);
                    startActivity(intent);
                } else {
                    Toast.makeText(getApplicationContext(), task.getException().getMessage(), Toast.LENGTH_SHORT).show();
                }
            }
        });
    }

    @Override
    protected void onStart() {
        super.onStart();

        if (mAuth.getCurrentUser() != null) {
            finish();
            startActivity(new Intent(this, HomeActivity.class));
        }
    }

    @Override
    public void onClick(View view) {
        if (view.getId() == R.id.LogIn) {
            userLogin();
        }
    }

}

activity_login_new.xml代码:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/gradient"
    tools:context=".LoginNew">


    <ImageView
        android:id="@+id/imageView"
        android:layout_width="233dp"
        android:layout_height="297dp"
        android:layout_alignParentStart="true"
        android:layout_alignParentTop="true"
        android:layout_alignParentEnd="true"
        android:layout_alignParentBottom="true"
        android:layout_marginStart="88dp"
        android:layout_marginTop="47dp"
        android:layout_marginEnd="88dp"
        android:layout_marginBottom="387dp"
        android:contentDescription="@string/todo"
        app:srcCompat="@drawable/znaczek_druzyny" />

    <androidx.appcompat.widget.AppCompatEditText
        android:id="@+id/EditTextUsernameedit"
        android:layout_width="250dp"
        android:layout_height="40dp"
        android:background="#11000000"
        android:hint="@string/prompt_email"
        android:inputType="textPersonName"
        android:textSize="16sp"
        android:layout_marginBottom="35dp"
        android:layout_above="@+id/EditTextPasswordedit"
        android:layout_centerHorizontal="true"
        android:autofillHints="" />

    <androidx.appcompat.widget.AppCompatEditText
        android:id="@+id/EditTextPasswordedit"
        android:layout_width="250dp"
        android:layout_height="40dp"
        android:layout_alignStart="@+id/EditTextUsernameedit"
        android:layout_alignParentBottom="true"
        android:layout_marginStart="2dp"
        android:layout_marginBottom="201dp"
        android:background="#11000000"
        android:textSize="16sp"
        android:hint="@string/prompt_password"
        android:inputType="textPassword"
        android:autofillHints="" />


    <androidx.cardview.widget.CardView
        android:id="@+id/LogIn"
        android:layout_width="300dp"
        android:layout_height="50dp"
        android:layout_alignParentStart="true"
        android:layout_alignParentEnd="true"
        android:layout_alignParentBottom="true"
        android:layout_marginStart="55dp"
        android:layout_marginEnd="55dp"
        android:layout_marginBottom="85dp"
        app:cardBackgroundColor="@color/colorAccent"
        app:cardCornerRadius="25dp"
        app:cardElevation="10dp">

        <TextView
            android:id="@+id/textView"
            android:layout_width="wrap_content"
            android:layout_height="50dp"

            android:layout_gravity="center"
            android:layout_marginTop="13dp"
            android:layout_marginBottom="13dp"
            android:text="@string/action_sign_in"
            android:textColor="#fff"
            android:textSize="30sp" />
    </androidx.cardview.widget.CardView>

    <ProgressBar
        android:id="@+id/progressBar"
        style="?android:attr/progressBarStyle"
        android:layout_width="265dp"
        android:layout_height="265dp"
        android:layout_alignParentStart="true"
        android:layout_alignParentTop="true"
        android:layout_alignParentEnd="true"
        android:layout_alignParentBottom="true"
        android:layout_marginStart="65dp"
        android:layout_marginTop="230dp"
        android:layout_marginEnd="65dp"
        android:layout_marginBottom="230dp"
        android:visibility="gone" />
</RelativeLayout>
java android 字符串 nullpointerexception null

评论

0赞 Vladyslav Matviienko 9/20/2019
将内容视图设置为 ,但显示的布局文件是activity_login_newlogin_new_activity.xml
0赞 RMaster 121 9/20/2019
这是一个错别字,我已经纠正了。

答:

0赞 Madhav 9/20/2019 #1

改变 编辑文本 编辑文本用户名; 编辑文本 编辑文本密码;

自 AppCompatEditText 编辑文本用户名; AppCompatEditText 编辑文本密码;

并尝试

评论

0赞 RMaster 121 9/20/2019
它不起作用。错误是相同的,但不是android.widget.EditText.getText()是androidx.appcompat.widget.AppCompatEditText.getText()。
0赞 Madhav 9/20/2019
问题在这里 import android.widget.EditText;
0赞 Madhav 9/20/2019
首先删除此导入,然后再次导入并尝试
0赞 RMaster 121 9/20/2019
它不起作用。如果我理解正确,我必须删除“import android.widget.EditText;”,构建应用程序,然后再次导入它?
0赞 Vladyslav Matviienko 9/20/2019
AppCompatEditText 扩展 ,因此这不会改变任何内容EditText
0赞 Jakir Hossain 9/20/2019 #2

首先,您必须导入而不是androidx.appcompat.widget.AppCompatEditTextandroid.widget.EditText

其次,用代替 .您应修改以下行AppCompatEditTextEditText

FirebaseAuth mAuth;
AppCompatEditText EditTextUsername;
AppCompatEditText EditTextPassword;

...

希望对你有所帮助。

评论

0赞 Vladyslav Matviienko 9/20/2019
AppCompatEditText 扩展 ,因此这不会改变任何内容EditText
0赞 RMaster 121 9/20/2019
它不起作用。错误 java.lang.NullPointerException:尝试在 com.example.zapp4.LoginNew.userLogin(LoginNew.java:61) 的空对象引用上调用虚拟方法“android.text.Editable androidx.appcompat.widget.AppCompatEditText.getText()” 在 com.example.zapp4.LoginNew.onClick(LoginNew.java:120)
0赞 Jakir Hossain 9/20/2019
您的布局文件名或 ?activity_login_newlogin_new_activity
0赞 RMaster 121 9/20/2019
我的布局文件已activity_login_new.xml
0赞 Jakir Hossain 9/20/2019
但是,您发布的布局文件是您提到的。login_new_activity.xml