Событие нажатия кнопки Код :
btnsubmit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String meterip = textView.getText().toString().trim();
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
String userid = user.getUid();
Log.d("User Id",userid);
dbmeter= FirebaseDatabase.getInstance().getReference("Meter").child(userid);
Query query=dbmeter.orderByChild("final_Reading").limitToLast(1);
query.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot customerSnapshot : dataSnapshot.getChildren()){
Meter m = customerSnapshot.getValue(Meter.class);
fmonth=m.getFinal_Month();
fyear=m.getFinal_Year();
freading=m.getFinal_Reading();
Log.d("Final Reading",freading);
}
if (dataSnapshot.getValue()==null)
{
Toast.makeText(getApplicationContext(),"Database Data not Found",Toast.LENGTH_LONG).show();
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
Log.d("Final Reading",freading);
int imr = Integer.parseInt(freading); //Error indicating int null value
int fmr = Integer.parseInt(meterip);
int unit = fmr-imr;
unitconsume = String.valueOf(unit);
int energy = Integer.parseInt(Energy);
int rent = Integer.parseInt(Rent);
int price = unit*energy;
float gstf = (float) (price*12)/100;
float grossamount = (float) price+rent+gstf;
gross = String.valueOf(grossamount);
gst = String.valueOf(gstf);
Date date = new Date();
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("MMMM");
lmonth=simpleDateFormat.format(date).toUpperCase();
simpleDateFormat = new SimpleDateFormat("yyyy");
lyear=simpleDateFormat.format(date).toUpperCase();
String id = dbmeter.push().getKey();
Meter c = new Meter(id, freading,fmonth,fyear,meterip,lmonth,lyear,unitconsume,Energy,gst,Rent,gross);
dbmeter.child(id).setValue(c);
Intent intent = new Intent(MeterReading.this, Drawer_MainPage.class);
startActivity(intent);
finish();
}
});
База данных Json
Структура в Firebase, как показано ниже. В Meter первый ребенок - это идентификатор пользователя, а затем Push Id.
Я хочу получить последнюю запись для чтения метра, и мне нужно получить значение Final_Reading
, чтобы рассчитать дальше, но вместо этого я получаю null
вместо правильных данных. Я использовал Firebase для того же метра, но с addValueListener
, где я получил с помощью класса, но здесь не удалось получить.
Я видел в режиме отладки, где он не входит в dbmeter.add
.
Я объявил все используемые переменные выше onCreate(
) Метод.
Ошибка
java.lang.NumberFormatException: Invalid int: ""
идет прямо сейчас в этом первом ряду, который я принес
int imr = Integer.parseInt(freading);