java.lang.NullPointerException Firebase - PullRequest
       1

java.lang.NullPointerException Firebase

0 голосов
/ 29 октября 2018

Я страдал от этой проблемы 2 дня и не могу ее решить

У меня есть этот код

public class SettingsActivity extends AppCompatActivity {
 private DatabaseReference mUserDatabase;
 private FirebaseUser mCurrentUser;
 //Android Layout

 private CircleImageView mDisplayImage;
 private TextView mName;
 private TextView mStatus;
 private Button mStatusBtn;
 private Button mImageBtn;
 private static final int GALLERY_PICK = 1;

 // Storage Firebase
 private ProgressDialog mProgressDialog;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.activity_settings);

     mDisplayImage = (CircleImageView) findViewById(R.id.settings_image);
     mName = (TextView) findViewById(R.id.settings_name);
     mStatus = (TextView) findViewById(R.id.settings_status);
     mStatusBtn = (Button) findViewById(R.id.settings_status_btn);
     mImageBtn = (Button) findViewById(R.id.settings_image_btn);
     mCurrentUser = FirebaseAuth.getInstance().getCurrentUser();

     String current_uid = mCurrentUser.getUid();
     mUserDatabase = FirebaseDatabase.getInstance().getReference().child("Users").child(current_uid);
     mUserDatabase.keepSynced(true);
     mUserDatabase.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            String name = dataSnapshot.child("name").getValue().toString();
            final String image = dataSnapshot.child("image").getValue().toString();
            String status = dataSnapshot.child("status").getValue().toString();
            String thumb_image = dataSnapshot.child("thumb_image").getValue().toString();
            mName.setText(name);
            mStatus.setText(status);
        }
        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {

        }
    });
 }
}

В моем журнале я получил эту проблему

E / AndroidRuntime: FATAL EXCEPTION: main Процесс: com.example.pc.newchatj, PID: 724 java.lang.NullPointerException: попытка вызвать виртуальный метод 'java.lang.String java.lang.Object.toString ()' для ссылки на пустой объект в com.example.pc.newchatj.SettingsActivity $ 1.onDataChange (SettingsActivity.java:74) на com.google.firebase.database.core.ValueEventRegistration.fireEvent (com.google.firebase: firebase-database @@ 16.0.4: 75) на com.google.firebase.database.core.view.DataEvent.fire (com.google.firebase: firebase-database @@ 16.0.4: 63) на com.google.firebase.database.core.view.EventRaiser $ 1.run (com.google.firebase: firebase-database @@ 16.0.4: 55) на android.os.Handler.handleCallback (Handler.java:739) на android.os.Handler.dispatchMessage (Handler.java:95) на android.os.Looper.loop (Looper.java:135) на android.app.ActivityThread.main (ActivityThread.java:5254) в java.lang.reflect.Method.invoke (родной метод) в java.lang.reflect.Method.invoke (Method.java:372) на com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:903) на com.android.internal.os.ZygoteInit.main (ZygoteInit.java:698)

Вот мой экран FirebaseDatabase

enter image description here

Может ли кто-нибудь помочь, пожалуйста, спасибо !!!

Ответы [ 2 ]

0 голосов
/ 29 октября 2018

Добавив ответ Мартину, вы также можете сделать это

String name = dataSnapshot.child("name").getValue(String.class);

вместо этого

String name = dataSnapshot.child("name").getValue().toString();

Кроме того, всегда проверяйте, совпадает ли ваша ссылка с вашими данными на консоли Firebase, и всегда используйте

if(dataSnapshot.exists()){....}

до получения каких-либо результатов, так что вы можете поймать любые проблемы там

например

    if(dataSnapshot.exists()){
    String name = dataSnapshot.child("name").getValue().toString();
                final String image = dataSnapshot.child("image").getValue().toString();
                String status = dataSnapshot.child("status").getValue().toString();
                String thumb_image = dataSnapshot.child("thumb_image").getValue().toString();
                mName.setText(name);
                mStatus.setText(status);

    }
  ...
0 голосов
/ 29 октября 2018

удаляет " двойные кавычки и _ пробелы из имен полей Firebase name и status.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...