空活动为NullPointer异常-Android Studion,Java [关闭]

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了空活动为NullPointer异常-Android Studion,Java [关闭]相关的知识,希望对你有一定的参考价值。

我正在尝试构建一个移动应用,但遇到了一些问题。首先:我创建了一个登录和注册活动,连接到Firebase,创建了一个User类,以便将有关用户的信息保存在数据库中,不仅包括电子邮件和密码,而且一切正常。然后,我打开了一个抽屉活动,并添加了一个名为Account的活动,其中应显示有关用户的数据。最初尝试获得NullPointerException,但尝试了另一种方法,最后设法解决了该问题:当我从navi抽屉的字段中选择Account时,AccountActivity打开并且用户数据在那里。在AccountActivity中,我创建了一个“更新”按钮,当您单击它时,它将打开一个新活动,您可以在其中更改帐户中的数据,并且新数据将在Firebase中更新。我只使用了6个字段中的4个进行了尝试,然后它起作用了,然后,当我将最后两个字段(与其他4个字段完全一样)放置时,应用程序崩溃了,又再次出现了NULLPointerException。我没有做任何更改,仅添加了最后一个字段。

另一个问题是,现在,当我尝试访问RegisterActivity时,它正在打开一个空活动,并显示文本“活动”,我真的不明白为什么。

有人可以给我一些帮助吗?

用户类


    public String fullName;
    public String email;
    public String gender;
    public String age;
    public String weight;
    public String height;

    public User()

    


    public User(String fullName, String email, String gender,String age, String weight, String height)
        this.fullName = fullName;
        this.email = email;
        this.gender = gender;
        this.age = age;
        this.weight = weight;
        this.height = height;
    

    public  String getFullName() 
        return fullName;
    

    public  String getEmail() 
        return email;
    

    public String getGender() 
        return gender;
    

    public String getWeight() 
        return weight;
    

    public String getHeight() 
        return height;
    

    public String getAge()  return age; 

    public void setFullName(String fullName) 
        this.fullName = fullName;
    

    public void setEmail(String email) 
        this.email = email;
    

    public void setGender(String gender) 
        this.gender = gender;
    

    public void setWeight(String weight) 
        this.weight = weight;
    

    public void setHeight(String height) 
        this.height = height;
    

    public void setAge(String age)  this.age = age; 

AccountActivity中从火力基地获取数据的方法

        for (DataSnapshot ds : dataSnapshot.getChildren())
            User user = new User();
            user.setFullName(ds.child(userId).getValue(User.class).getFullName());
            user.setEmail(ds.child(userId).getValue(User.class).getEmail());
            user.setAge(ds.child(userId).getValue(User.class).getAge());
            user.setGender(ds.child(userId).getValue(User.class).getGender());
            user.setWeight(ds.child(userId).getValue(User.class).getWeight());
            user.setHeight(ds.child(userId).getValue(User.class).getHeight());

            userName.setText(user.getFullName());
            userEmail.setText("Email: " + user.getEmail());
            userAge.setText("Age: " + user.getAge());
            userGender.setText("Gender: " +user.getGender());
            userWeight.setText("Weight: " + user.getWeight());
            userHeight.setText("Height: " + user.getHeight());

        

UpdateProfileActivity:

            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) 
                showData(dataSnapshot);
            

            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) 

            
        );

        saveChanges.setOnClickListener(new View.OnClickListener() 
            @Override
            public void onClick(View v) 

                String name = newName.getText().toString();
                String email = newEmail.getText().toString();
                String age = newAge.getText().toString();
                String gender = newGender.getText().toString();
                String weight = newWeight.getText().toString();
                String height = newHeight.getText().toString();

                User updateUser = new User(name,email,age,gender,weight,height);

                databaseReference.setValue(updateUser);

                finish();
            
        );

    

    @SuppressLint("SetTextI18n")
    private void showData(DataSnapshot dataSnapshot) 
        for (DataSnapshot ds : dataSnapshot.getChildren())
            User user = new User();
            user.setFullName(ds.child(userId).getValue(User.class).getFullName());
            user.setEmail(ds.child(userId).getValue(User.class).getEmail());
            user.setAge(ds.child(userId).getValue(User.class).getAge());
            user.setGender(ds.child(userId).getValue(User.class).getGender());
            user.setWeight(ds.child(userId).getValue(User.class).getWeight());
            user.setHeight(ds.child(userId).getValue(User.class).getHeight());

            newName.setText(user.getFullName());
            newEmail.setText(user.getEmail());
            newAge.setText(user.getAge());
            newGender.setText(user.getGender());
            newWeight.setText( user.getWeight());
            newHeight.setText( user.getHeight());
        
    


我希望再次激活Register Activity,我的意思是,当我尝试访问它时,该应用应打开Register表单,并且该表单应该可以运行,并且我希望能够从Firebase检索数据并更新数据。

这是我尝试访问注册表时得到的信息


2020-06-05 19:15:20.500 15446-15460/? E/MemoryLeakMonitorManager: MemoryLeakMonitor.jar is not exist!
2020-06-05 19:15:20.501 15446-15446/? E/Minikin: Could not get cmap table size!

2020-06-05 19:15:20.394 15446-15465/? E/AwareLog: AtomicFileUtils: readFileLines file not exist: android.util.AtomicFile@a5b95aa
答案

您可以提供日志吗?要有一个更好的主意,问题在哪里,NPE在哪里

以上是关于空活动为NullPointer异常-Android Studion,Java [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

在使用ViewPager时尝试从其父活动修改片段时出现空指针异常

Android SQLite NullPointer 异常和堆栈溢出异常 [重复]

自定义抽屉适配器中 Inflater 上的 Nullpointer 异常

android上的nullpointer异常[重复]

UnitTesting Android TabActivity时获取Nullpointer异常

Spring Batch - 分块和多线程步骤 - RowMapper 中的 Nullpointer 异常