firebase - 'java.lang.String com.google.firebase.auth.FirebaseUser.getUid()' 在空对象引用 androidx
问题描述
在我的代码运行良好之前,你能帮我吗来自其他论坛的几种解决方案,我无法修复它。
它从字面上告诉我 uid 是什么,但我不知道如何使它不为空
package com.example.medicare;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.graphics.Color;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.NotificationCompat;
import com.example.medicare.modelo.Cita;
import com.google.android.gms.tasks.OnSuccessListener;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;
import com.google.firebase.storage.FirebaseStorage;
import com.google.firebase.storage.StorageReference;
import com.squareup.picasso.Picasso;
import java.text.DateFormat;
import java.util.Calendar;
import cn.pedant.SweetAlert.SweetAlertDialog;
import de.hdodenhof.circleimageview.CircleImageView;
public class MenuActivity extends AppCompatActivity {
TextView nombreC, nss;
CircleImageView imagenPerfil;
SharedPreferences sp;
DatabaseReference dbdReferencia;
FirebaseUser usuario;
String uid;
NotificationCompat.Builder builder;
String pacienteNombreC, pacienteNss, fechaHoy;
int numeroCitas;
static int token = 0;
String[] numeros = {"uno", "dos", "tres", "cuatro", "cinco", "seis", "siete", "ocho", "nueve", "diez"};
public static void setToken(int number)
{
token = number;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_menu);
numeroCitas = 0;
sp = getSharedPreferences("Iniciar Sesion", MODE_PRIVATE);
usuario = FirebaseAuth.getInstance().getCurrentUser();
nombreC = findViewById(R.id.nombreCompleto);
nss = findViewById(R.id.nss);
imagenPerfil = findViewById(R.id.imagen_perfil);
uid = usuario.getUid();
Calendar c = Calendar.getInstance();
fechaHoy = DateFormat.getDateInstance(DateFormat.SHORT).format(c.getTime());
DatabaseReference ref = FirebaseDatabase.getInstance().getReference("Citas");
ref.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for (DataSnapshot data : dataSnapshot.getChildren()) {
Cita cita = data.getValue(Cita.class);
if (cita.getEmailPaciente().equals(FirebaseAuth.getInstance().getCurrentUser().getEmail()) &&
cita.getestado().equals("Aceptado") &&
cita.getfecha().equals(fechaHoy)
)
numeroCitas++;
}
if (numeroCitas == 1) {
builder = new NotificationCompat.Builder(com.example.medicare.MenuActivity.this)
.setSmallIcon(R.drawable.ic_heart_beats)
.setContentTitle("Cita diaria")
.setContentText("Usted tiene una cita el dia de hoy")
.setAutoCancel(true)
.setColor(Color.parseColor("#33AEB6"))
.setDefaults(Notification.DEFAULT_ALL)
.setPriority(NotificationCompat.PRIORITY_HIGH);
}
if (numeroCitas > 1) {
builder = new NotificationCompat.Builder(com.example.medicare.MenuActivity.this)
.setSmallIcon(R.drawable.ic_heart_beats)
.setContentTitle("Citas diarias")
.setContentText("Usted tiene " + numeros[numeroCitas - 1] + " citas el dia de hoy")
.setAutoCancel(true)
.setColor(Color.parseColor("#33AEB6"))
.setDefaults(Notification.DEFAULT_ALL)
.setPriority(NotificationCompat.PRIORITY_HIGH);
}
if (numeroCitas == 0) {
builder = new NotificationCompat.Builder(com.example.medicare.MenuActivity.this)
.setSmallIcon(R.drawable.ic_heart_beats)
.setContentTitle("Citas diarias")
.setContentText("Usted no tiene citas el dia de hoy")
.setAutoCancel(true)
.setColor(Color.parseColor("#33AEB6"))
.setDefaults(Notification.DEFAULT_ALL)
.setPriority(NotificationCompat.PRIORITY_HIGH);
}
if(token == 0) {
Intent intent = new Intent(com.example.medicare.MenuActivity.this, AsignarCitaActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
PendingIntent pendingIntent = PendingIntent.getActivity(com.example.medicare.MenuActivity.this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
builder.setContentIntent(pendingIntent);
NotificationManager notificationManager = (NotificationManager) getSystemService(
Context.NOTIFICATION_SERVICE
);
notificationManager.notify(0, builder.build());
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
dbdReferencia = FirebaseDatabase.getInstance().getReference("Pacientes");
dbdReferencia.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
//pacienteNombreC = dataSnapshot.child(uid).child("apellidos").getValue(String.class) + " " + dataSnapshot.child(uid).child("nombreC").getValue(String.class);
pacienteNombreC = dataSnapshot.child(uid).child("nombreC").getValue(String.class);
pacienteNss = dataSnapshot.child(uid).child("nss").getValue(String.class);
nombreC.setText(pacienteNombreC);
nss.setText(pacienteNss);
StorageReference storageReference = FirebaseStorage.getInstance().getReference();
StorageReference profileRef = storageReference.child("imagen_perfil").child(FirebaseAuth.getInstance().getCurrentUser().getEmail() + ".jpg");
profileRef.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
@Override
public void onSuccess(Uri uri) {
Picasso.get().load(uri).into(imagenPerfil);
}
});
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
public void buscarDoctor(View view) {
Intent intent = new Intent(com.example.medicare.MenuActivity.this, BuscarDoctorEspecialidadActivity.class);
startActivity(intent);
}
public void Citas(View view) {
Intent intent = new Intent(com.example.medicare.MenuActivity.this, AsignarCitaActivity.class);
startActivity(intent);
}
public void perfilInfo(View view) {
Intent intent = new Intent(com.example.medicare.MenuActivity.this, PerfilPacienteInfo.class);
startActivity(intent);
}
public void abrirExpedienteMedico(View view) {
Intent intent = new Intent(com.example.medicare.MenuActivity.this, ExpedienteMedico.class);
startActivity(intent);
}
public void cerrarSesion(View view) {
sp.edit().putBoolean("Sesion cerrada", false).apply();
FirebaseAuth.getInstance().signOut();
finish();
startActivity(new Intent(com.example.medicare.MenuActivity.this, MainActivity.class));
}
@Override
public void onBackPressed() {
SweetAlertDialog dialog = new SweetAlertDialog(this, SweetAlertDialog.WARNING_TYPE);
dialog.setConfirmText("Si");
dialog.setCancelText("No");
dialog.setContentText("Estas seguro que deseas salir de edicare ?");
dialog.setTitleText("Cerrar Aplicacion");
dialog.setConfirmClickListener(new SweetAlertDialog.OnSweetClickListener() {
@Override
public void onClick(SweetAlertDialog sweetAlertDialog) {
finishAffinity();
System.exit(0);
}
});
dialog.setCancelClickListener(new SweetAlertDialog.OnSweetClickListener() {
@Override
public void onClick(SweetAlertDialog sweetAlertDialog) {
sweetAlertDialog.cancel();
}
});
dialog.show();
}
public void myDoctors(View view) {
Intent intent = new Intent(com.example.medicare.MenuActivity.this, MisDoctoresActivity.class);
startActivity(intent);
}
}
解决方案
推荐阅读
- image - 管理对照明条件非常敏感的文本检测器
- javascript - 如何在 React 中遍历包含数组的对象并且该对象处于状态
- ios - 将应用内购买产品与服务器同步
- sql - Postgres Sql 查询digits.digits.digits
- java - 如何更改出现在 android studio 窗口顶部的名称?
- mysql - MySQL:选择另一列不同的重复项?
- sql - 多个表上的 sql lite 中的完整外连接
- python - 在python中的单独行中获取子级别标题scrapy
- python - Google Cloud Functions 在没有错误消息的情况下崩溃
- python - 什么是 Lua 等价于 python 的“in”语句?