Ошибка исключения нулевого указателя довольно очевидна.
java .lang.RuntimeException: Невозможно запустить действие ComponentInfo {com.helpinghandsorg.helpinghands / com.helpinghandsorg.helpinghands.MainActivity} : j ava.lang.NullPointerException: попытка вызвать виртуальный метод 'boolean java .lang.String.equals (java .lang.Object)' для ссылки на пустой объект
Пока вы не раскрыли код, где это происходит, похоже, что вы пытаетесь вызвать метод equals
для нулевой ссылки на строку. Я бы убедитесь, что эта переменная действительно не равна нулю.
По этой причине вы не видите журнал, потому что ваше приложение падает.
Для вашей второй проблемы, когда внутри onDataChange
метод, вы не можете получить доступ к локальной переменной, и, следовательно, вы видите эту ошибку.
Рассмотрите возможность создания переменной внутри метода и передачи ее с обратным вызовом туда, где ваш другой v ariable resides.
ОБНОВЛЕНИЕ (из-за комментария ОП)
Чтобы получить обновленное значение для административной информации, вы можете сделать следующее :
public String getAdminInfo(successCallback, failureCallback){
dbRef = FirebaseDatabase.getInstance().getReference("Volunteer");
uid= mAuth.getCurrentUser().getUid();
readData(new FirebaseCallBack() {
@Override
public void Callback(Volunteer data) {
Log.d("crashfix" ," I am not executing ");
adminStatus = data.isAdmin();
//Here is where you insert your callback
successCallback(adminStatus);
}
});
return adminStatus;
}
Где-то в вашем коде:
getAdminInfo(gotAdminInfoSuccess, gotAdminInfoFailure);
private void gotAdminInfoSuccess(String adminState) {
Log.d("crashfix" ,"inside onCreate admin" + admin);
//checking if current user is admin
if(adminState.equals("true")){
Toast.makeText(this,"Welcome! " + newVolunteer.getFullName() , Toast.LENGTH_SHORT).show();
Intent intent = new Intent(this, Main2Activity.class);
startActivity(intent);
finish();
}
}
private void gotAdminInfoFailure(String error) {
//Do your failure logic here
}