【问题标题】:"java.lang.NullPointerException" Error(Error details, there in the article) How can i fix it?“java.lang.NullPointerException”错误(错误详细信息,文章中有)我该如何解决?
【发布时间】:2019-12-03 11:06:39
【问题描述】:

尝试在 Firebase 实时数据库中注册用户时收到 1-2 个代码错误。更正它们后,我收到了这样的错误。我在这里做了一些研究,但我没有尝试。请帮帮我。

这是我收到的错误:

E/AndroidRuntime: 致命异常: main 进程:com.example.yagoozonfirebasejava,PID:6130 java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“void android.widget.TextView.setText(java.lang.CharSequence)” 在 com.example.yagoozonfirebasejava.ProfilePageAdapter.onBindViewHolder(ProfilePageAdapter.java:60) 在 com.example.yagoozonfirebasejava.ProfilePageAdapter.onBindViewHolder(ProfilePageAdapter.java:16) 在 android.support.v7.widget.RecyclerView$Adapter.onBindViewHolder(RecyclerView.java:6781) 在 android.support.v7.widget.RecyclerView$Adapter.bindViewHolder(RecyclerView.java:6823) 在 android.support.v7.widget.RecyclerView$Recycler.tryBindViewHolderByDeadline(RecyclerView.java:5752) 在 android.support.v7.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:6019) 在 android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5858) 在 android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5854) 在 android.support.v7.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:2230) 在 android.support.v7.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1557) 在 android.support.v7.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1517) 在 android.support.v7.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:612) 在 android.support.v7.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:3924) 在 android.support.v7.widget.RecyclerView.dispatchLayout(RecyclerView.java:3641) 在 android.support.v7.widget.RecyclerView.onLayout(RecyclerView.java:4194) 在 android.view.View.layout(View.java:20672) 在 android.view.ViewGroup.layout(ViewGroup.java:6194) 在 android.support.constraint.ConstraintLayout.onLayout(ConstraintLayout.java:1915) 在 android.view.View.layout(View.java:20672) 在 android.view.ViewGroup.layout(ViewGroup.java:6194) 在 android.widget.FrameLayout.layoutChildren(FrameLayout.java:323) 在 android.widget.FrameLayout.onLayout(FrameLayout.java:261) 在 android.view.View.layout(View.java:20672) 在 android.view.ViewGroup.layout(ViewGroup.java:6194) 在 android.widget.LinearLayout.setChildFrame(LinearLayout.java:1812) 在 android.widget.LinearLayout.layoutVertical(LinearLayout.java:1656) 在 android.widget.LinearLayout.onLayout(LinearLayout.java:1565) 在 android.view.View.layout(View.java:20672) 在 android.view.ViewGroup.layout(ViewGroup.java:6194) 在 android.widget.FrameLayout.layoutChildren(FrameLayout.java:323) 在 android.widget.FrameLayout.onLayout(FrameLayout.java:261) 在 android.view.View.layout(View.java:20672) 在 android.view.ViewGroup.layout(ViewGroup.java:6194) 在 android.widget.LinearLayout.setChildFrame(LinearLayout.java:1812) 在 android.widget.LinearLayout.layoutVertical(LinearLayout.java:1656) 在 android.widget.LinearLayout.onLayout(LinearLayout.java:1565) 在 android.view.View.layout(View.java:20672) 在 android.view.ViewGroup.layout(ViewGroup.java:6194) 在 android.widget.FrameLayout.layoutChildren(FrameLayout.java:323) 在 android.widget.FrameLayout.onLayout(FrameLayout.java:261) 在 com.android.internal.policy.DecorView.onLayout(DecorView.java:753) 在 android.view.View.layout(View.java:20672) 在 android.view.ViewGroup.layout(ViewGroup.java:6194) 在 android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2792) 在 android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2319) 在 android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1460) 在 android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7183) 在 android.view.Choreographer$CallbackRecord.run(Choreographer.java:949) 在 android.view.Choreographer.doCallbacks(Choreographer.java:761) 在 android.view.Choreographer.doFrame(Choreographer.java:696) 在 android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:935) 在 android.os.Handler.handleCallback(Handler.java:873) 在 android.os.Handler.dispatchMessage(Handler.java:99) E/AndroidRuntime:在 android.os.Looper.loop(Looper.java:193) 在 android.app.ActivityThread.main(ActivityThread.java:6669) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)

个人资料页面适配器代码:

import android.content.Context;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;

import com.google.firebase.database.DatabaseReference;

import java.util.List;

public class ProfilePageAdapter extends RecyclerView.Adapter<ProfilePageAdapter.CardDesingHolder>{

    private Context mContext;
    private List<Users> usersList;
    private DatabaseReference myRef;

    public ProfilePageAdapter(Context mContext, List<Users> kisilerListe, DatabaseReference myRef) {
        this.mContext = mContext;
        this.usersList = kisilerListe;
        this.myRef = myRef;
    }

    public class CardDesingHolder extends RecyclerView.ViewHolder {

        private TextView user_RealNameProfileAdapter;
        private TextView user_surnameProfileAdapter;
        private TextView user_emailProfileAdapter;
        private TextView user_nameProfileAdapter;
        private ImageView user_ImageViewProfileAdapter;

        public CardDesingHolder(@NonNull View itemView) {
            super(itemView);

            user_RealNameProfileAdapter = itemView.findViewById(R.id.userRealName_userCard);
            user_surnameProfileAdapter = itemView.findViewById(R.id.usersurname_userCard);
            user_emailProfileAdapter = itemView.findViewById(R.id.userEmail_userCard);
            user_ImageViewProfileAdapter = itemView.findViewById(R.id.userProfileImage_userCard);
        }
    }

    @NonNull
    @Override
    public CardDesingHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
        View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.user_card, viewGroup, false);
        return new CardDesingHolder(view);
    }

    @Override
    public void onBindViewHolder(final CardDesingHolder cardDesingHolder, int position) {
        final Users user = usersList.get(position);

        cardDesingHolder.user_emailProfileAdapter.setText("Mail : " + user.getUser_email());
        cardDesingHolder.user_surnameProfileAdapter.setText("Surname : " + user.getUser_surname());
        cardDesingHolder.user_RealNameProfileAdapter.setText("Name : " + user.getUser_name());
        cardDesingHolder.user_nameProfileAdapter.setText("Username : " + user.getUser_username());


    }

    @Override
    public int getItemCount() {
        return usersList.size();
    }
}
```


SignUp Page Code's : 
```java
package com.example.yagoozonfirebasejava;

import android.Manifest;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.graphics.Bitmap;
import android.net.Uri;
import android.provider.MediaStore;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.Toast;

import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.OnFailureListener;
import com.google.android.gms.tasks.OnSuccessListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.AuthResult;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ServerValue;
import com.google.firebase.storage.FirebaseStorage;
import com.google.firebase.storage.StorageReference;
import com.google.firebase.storage.UploadTask;

import java.io.IOException;
import java.util.UUID;

public class signupPage extends AppCompatActivity {
private Button btn_signupSignPage;
private EditText emailText;
private EditText passwordText;
private EditText user_surname;
private EditText user_username;
private EditText user_name;


// Database and Storage
private FirebaseAuth mAuth;
FirebaseDatabase firebaseDatabase;
DatabaseReference myRef;


private StorageReference mStorageRef;

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

        user_username = findViewById(R.id.username_signPage);
        user_surname = findViewById(R.id.surname_SignUpPage);
        user_name = findViewById(R.id.name_signPage);
        btn_signupSignPage = findViewById(R.id.btn_signSignupPage);
        emailText = findViewById(R.id.mail_signupPage);
        passwordText = findViewById(R.id.pass_signupPage);

        // Database and Storage
        // Veritabanı ve Storage
        mAuth = FirebaseAuth.getInstance();
        firebaseDatabase = FirebaseDatabase.getInstance();
        myRef = firebaseDatabase.getReference("Users");
        mStorageRef = FirebaseStorage.getInstance().getReference();


    }

    // Sign Up Method
    // Kullanıcı Kayıt etme metodu
   public void signUp(View view) {
       mAuth.createUserWithEmailAndPassword(emailText.getText().toString(), passwordText.getText().toString())
               .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
                   @Override
                   public void onComplete(@NonNull Task<AuthResult> task) {
                       if (task.isSuccessful()) /* Kullanıcı girişi başarılı ise bu çalışacak */ {
                           Toast.makeText(signupPage.this, "User Created", Toast.LENGTH_SHORT).show();
                           Intent homePage = new Intent(signupPage.this, ProfilePage.class);
                           startActivity(homePage);
                           finish();

                       } else /* Kullanıcı girişi başarısız ise bu çalışacak */ {
                           Intent signBack = new Intent(signupPage.this, signupPage.class);
                           startActivity(signBack);
                           finish();
                       }

                   }
               }).addOnFailureListener(this, new OnFailureListener() {
           @Override
           public void onFailure(@NonNull Exception e) {
               Toast.makeText(signupPage.this, e.getLocalizedMessage(), Toast.LENGTH_SHORT).show();
           }
       });

       String userName = user_name.getText().toString();
       String userSurname = user_surname.getText().toString();
       String username = user_username.getText().toString();
       String user_email = emailText.getText().toString();
       String key = myRef.push().getKey();


       Users user = new Users(key,username,userSurname,userName,user_email);

       myRef.push().setValue(user);


/*
       // Profile Image Method
       // Profil Resmi Seçme Metodu
       public void selectImage (View view){
           if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
               ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, 1);
           } else {
               Intent gallery = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
               startActivityForResult(gallery, 2);
           }
       }


    // Permission Control
    // İzin Kontrolü
    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        if (requestCode == 1) {
            if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                Intent gallery = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
                startActivityForResult(gallery, 2);
            }
        }
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
    }

    // Profil Resmi Seçtirme
    @Override
    protected void onActivityResult(int resultCode, @Nullable Intent data) {
        if(requestCode == 2 && resultCode == RESULT_OK &&  data != null) {
            selectedImage = data.getData();
            try {
                Bitmap bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), selectedImage);
                profilResmi.setImageBitmap(bitmap);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        super.onActivityResult(requestCode, resultCode, data);
    }
*/
   }

}
```


Users Class Code's : 
```java
package com.example.yagoozonfirebasejava;

public class Users {
    private String user_id;
    private String user_name;
    private String user_username;
    private String user_surname;
    private String user_email;

    // Empty Constructor
    public Users() {
    }

    // Constructor
    public Users(String user_id, String user_name, String user_username, String user_surname, String user_email ) {
        this.user_id = user_id;
        this.user_name = user_name;
        this.user_username = user_username;
        this.user_surname = user_surname;
        this.user_email = user_email;
    }

    // Getter And Setter's

    public String getUser_id() {
        return user_id;
    }

    public void setUser_id(String user_id) {
        this.user_id = user_id;
    }

    public String getUser_name() {
        return user_name;
    }

    public void setUser_name(String user_name) {
        this.user_name = user_name;
    }

    public String getUser_username() {
        return user_username;
    }

    public void setUser_username(String user_username) {
        this.user_username = user_username;
    }

    public String getUser_surname() {
        return user_surname;
    }

    public void setUser_surname(String user_surname) {
        this.user_surname = user_surname;
    }

    public String getUser_email() {
        return user_email;
    }

    public void setUser_email(String user_email) {
        this.user_email = user_email;
    }

}
```

user_card XML:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <TextView
            android:id="@+id/userRealName_userCard"
            android:layout_marginTop="130dp"
            android:textAlignment="center"
            android:textSize="25dp"
            android:layout_width="match_parent"
            android:layout_height="41dp"
            android:text="Yılmaz Yağız" />

        <TextView
            android:id="@+id/usersurname_userCard"
            android:textAlignment="center"
            android:layout_marginTop="25dp"
            android:textSize="30dp"
            android:layout_below="@id/userRealName_userCard"
            android:layout_width="match_parent"
            android:layout_height="41dp"
            android:text="Dokumacı" />

        <ImageView
            android:id="@+id/userProfileImage_userCard"
            android:layout_marginTop="25dp"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@id/usersurname_userCard"
            tools:srcCompat="@tools:sample/avatars" />

        <TextView
            android:id="@+id/userEmail_userCard"
            android:layout_marginTop="25dp"
            android:textAlignment="center"
            android:textSize="25dp"
            android:layout_below="@id/userProfileImage_userCard"
            android:layout_width="match_parent"
            android:layout_height="41dp"
            android:text="ddismnaklda@gmail.com" />

        <TextView
            android:id="@+id/username_userCard"
            android:layout_marginTop="25dp"
            android:textAlignment="center"
            android:textSize="25dp"
            android:layout_below="@id/userEmail_userCard"
            android:layout_width="match_parent"
            android:layout_height="41dp"
            android:text="yagoo" />


    </RelativeLayout>


</LinearLayout>

【问题讨论】:

  • 似乎没有设置user_nameProfileAdapter,因此为空
  • 请发布您的user_card XML 布局
  • 是的,我做到了。

标签: java android firebase firebase-realtime-database firebase-authentication


【解决方案1】:

尝试将user_nameProfileAdapter = itemView.findViewById(R.id.userName_userCard); 添加到您的CardDesingHolder 构造函数

【讨论】:

  • 你写的时候我注意到了。我忘了添加它。当我添加工作。谢谢!
【解决方案2】:

onBindViewHolder 内部

cardDesingHolder.user_emailProfileAdapter
cardDesingHolder.user_surnameProfileAdapter        
cardDesingHolder.user_RealNameProfileAdapter
cardDesingHolder.user_nameProfileAdapter

任何一个文本视图都是空的

【讨论】:

  • 但我想我已经定义了这一切。有没有被忽视的地方?
猜你喜欢
  • 2022-10-20
  • 1970-01-01
  • 2020-12-11
  • 1970-01-01
  • 1970-01-01
  • 2010-09-29
  • 2020-02-01
  • 1970-01-01
  • 2017-01-04
相关资源
最近更新 更多