当前位置: 首页 > 知识库问答 >
问题:

空指针的致命异常

滕英奕
2023-03-14

当你点击btnChangePass,我得到错误。

我有一个错误:

FATAL EXCEPTION:主进程:com.company.learn2,PID:18854java.lang.NullPointerExcture atcom.company.learn2。Heslo.change密码(Heslo.java:84)在com.company.learn2。Heslo.on点击(Heslo.java:69)android.view.View.perform点击(View.java:4506)android.view.View$PerformClick.run(View.java:18848)at<--PLHD--14/>Handler.handle回调(Handler.java:808)在android.os.Handler.dispatch消息(Handler.java:103)在android. os.在android. app.ActivityThread. main(ActivityThread. java: 5341)在java. lang.反射。方法。方法调用(方法. java: 515)在com. android. interal. os。ZygoteInit$method odAndArgsCaller. run(ZygoteInit. java: 829)在com. android. interal. os。在dalvik. system上的ZygoteInit. main(ZygoteInit. java: 645)。NativeStart. main(本机方法)

我的活动:

public class Heslo extends AppCompatActivity implements View.OnClickListener {

    private EditText input_new_password;
    private Button btnChangePass;
    private Button btnLogout;


    private FirebaseAuth auth;
    private ImageButton imageButton;

    private RelativeLayout mIdLayout;

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

        input_new_password = (EditText)findViewById(R.id.dashboard_new_password);
        btnChangePass = (Button)findViewById(R.id.dashboard_btn_change_pass);
        imageButton = (ImageButton) findViewById(R.id.action_back);
        btnLogout = (Button) findViewById(R.id.dashboard_btn_logout);

        mIdLayout = (RelativeLayout) findViewById(R.id.idLayout);



        imageButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(Heslo.this, MainActivity.class);
                startActivity(intent);
            }
        });

        btnChangePass.setOnClickListener(this);
        btnLogout.setOnClickListener(this);

    }




    @Override
    public void onClick(View view) {
        if(view.getId() == R.id.dashboard_btn_change_pass)
            changePassword(input_new_password.getText().toString());
        else if(view.getId() == R.id.dashboard_btn_logout)
            logoutUser();
    }

    private void logoutUser() {
        auth.signOut();
        if(auth.getCurrentUser() == null)
        {
            startActivity(new Intent(Heslo.this,Login.class));
            finish();
        }
    }

    private void changePassword(String newPassword) {
        FirebaseUser user = auth.getCurrentUser();
        user.updatePassword(newPassword).addOnCompleteListener(Heslo.this, new OnCompleteListener<Void>() {
            @Override
            public void onComplete(@NonNull Task<Void> task) {
                if(task.isSuccessful())
                {
                    Snackbar snackBar = Snackbar.make(mIdLayout,"Password changed",Snackbar.LENGTH_SHORT);
                    snackBar.show();
                }

            }
        });
    }

}

我的xml:

 <RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/idLayout">

    <android.support.v7.widget.Toolbar
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/baf"
        android:background="@color/colorPrimary"
        >
        <ImageButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/action_back"
            android:background="@color/colorPrimary"
            android:layout_gravity="left"
            android:src="@drawable/ic_arrow_back_white"/>

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Heslo"
            android:textSize="20dp"
            android:layout_marginStart="50dp"
            android:textColor="#FFFFFF"/>

    </android.support.v7.widget.Toolbar>

    <android.support.design.widget.TextInputLayout
        android:layout_below="@+id/baf"
        android:id="@+id/dashboard_input_new_password"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        >

        <EditText
            android:id="@+id/dashboard_new_password"
            android:hint="Zadej nové heslo"
            android:inputType="textPassword"
            android:maxLines="1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />

    </android.support.design.widget.TextInputLayout>

    <Button
        android:id="@+id/dashboard_btn_change_pass"
        style="@style/Widget.AppCompat.Button.Colored"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentStart="true"
        android:layout_below="@+id/dashboard_input_new_password"
        android:background="#263238"
        android:text="Změnit heslo" />

    <Button
        android:id="@+id/dashboard_btn_logout"
        style="@style/Widget.AppCompat.Button.Colored"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentStart="true"
        android:layout_below="@+id/dashboard_btn_change_pass"
        android:background="#263238"
        android:text="Odhlásit se"
        android:layout_marginTop="50dp"/>

</RelativeLayout>

共有1个答案

姬俊能
2023-03-14

在前线

用户。updatePassword(新密码)。添加OnCompleteListener(Heslo.this,新的OnCompleteListener

您将获得一个NullPointerException,这意味着其中的某个对象为null。

检查user对象,它可以从上面一行中获得:FirebasUser user=auth.getMONtUser();

我猜Firebase正在返回一个空用户。。。

 类似资料:
  • 我一直在youtube上学习android的自定义视图等等。在我尝试做一个表面视图(相当简单的描述在这个视频)。 我所做的事情与视频中所显示的几乎是同步的。

  • 问题内容: 有可能这可能是一个双重问题。我将String变量初始化为null。我可能会或可能不会使用一个值更新它。现在我想检查此变量是否不等于null以及我尝试执行的操作是否会得到null指针异常。空指针异常,因为它代价高昂。是否有任何有效的解决方法.TIA 问题答案: 如果您使用 你 不会 得到。 我怀疑你在做什么: 这是因为null 而引发,而不是因为null。 如果仍然无法解释,请发布您用于

  • 我已经更新了我的项目中的一些依赖关系之后,我的Hibernate配置类显示Nullpointerx的。 我将SpringDataJPA存储库与hibernate一起使用,已经超过24小时了,仍然没有找到任何关于小问题的适当解决方案。 我已经尝试过的一些解决方案:- 使用@bean(name=“entityManagerFactory”)提供bean名称 我面临的问题 波姆。xml文件 配置类 db

  • 当我试图从DB查询结果时,我得到一个空指针异常。以下是错误: 这是错误产生的函数。 如果我启动应用程序信息服务(=new ApplicationInfoService()),我会得到一个指向我的服务类的空指针错误,在这里进行查询 错误转到createQuery行,如果我打印出EntityManager,它将返回“null”。为什么我的Entitymanager不能初始化。我在我的登录系统中使用了几

  • 问题内容: 我最近正在学习Java并发编程。我知道关键字可以保证安全的发布。但是,当我阅读源代码时,发现and 字段未使用关键字。我发现该方法在方法中被调用,并且该方法直接将值分配给。此时,可能是因为未使用声明。我的理解正确吗?虽然可以保证读写线程的安全性,但是可以 保证不是一个正确的初始值 问题答案: 根据此博客文章https://shipilev.net/blog/2014/safe-publ