исключение нулевого указателя при использовании Uid в базе данных реального времени firebase android - PullRequest
0 голосов
/ 25 марта 2020

всякий раз, когда я пытаюсь загрузить данные с помощью Uid после входа в Google, это дает исключение нулевого указателя

Как Pu sh данные для базы данных реального времени в соответствии с Uid

Я новичок в android, пожалуйста, помогите

мой код


import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;

import java.util.HashMap;

public class Register extends AppCompatActivity {

    private Button val_btn;
    private EditText customer_name, company_name, mobile_no;
    private FirebaseAuth mAuth;
    private FirebaseAuth.AuthStateListener mAuthListener;
    private FirebaseDatabase mFirebaseDatabase;
    private DatabaseReference mDatabase;

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

        customer_name = (EditText) findViewById(R.id.ip_customer_name);
        company_name = (EditText) findViewById(R.id.ip_company_name);
        mobile_no = (EditText) findViewById(R.id.ip_mobile_no);

        val_btn = (Button) findViewById(R.id.btn_validate);

        mDatabase = FirebaseDatabase.getInstance().getReference();

        val_btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String cust_name = customer_name.getText().toString().trim();
                String comp_name = company_name.getText().toString().trim();
                String mob_no = mobile_no.getText().toString().trim();

                HashMap<String, String> datamap = new HashMap<String, String>();
                datamap.put("Customer Name", cust_name);
                datamap.put("Company Name", comp_name);
                datamap.put("Mobile No", mob_no);

                String currentuser = FirebaseAuth.getInstance().getCurrentUser().getUid();

                mDatabase.child("Users").child(currentuser).setValue(datamap).addOnCompleteListener(new OnCompleteListener<Void>() {
                    @Override
                    public void onComplete(@NonNull Task<Void> task) {
                        if (task.isSuccessful()) {
                            Toast.makeText(Register.this, "updated  :)", Toast.LENGTH_SHORT).show();
                        } else {
                            Toast.makeText(Register.this, "error  :(", Toast.LENGTH_SHORT).show();
                        }
                    }
                });
            }
        });
    }
}

и ошибка

java .lang.NullPointerException: попытка вызвать виртуальный метод 'java .lang.String com.google.firebase.auth.FirebaseUser.getUid ()' для ссылки на пустой объект

1 Ответ

0 голосов
/ 25 марта 2020

FirebaseAuth.getInstance().getCurrentUser() возвращает ноль, что означает, что пользователь не выполнил вход в тот момент, когда вы его вызвали. Ваш код должен проверить это или использовать прослушиватель, чтобы узнать, когда пользователь определенно вошел в систему.

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