Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/211.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android-Firebase数据库异常_Android_Firebase - Fatal编程技术网

Android-Firebase数据库异常

Android-Firebase数据库异常,android,firebase,Android,Firebase,我从firebase“com.google.firebase.database.DatabaseException:无法将java.lang.Long类型的对象转换为类型”我在单击片段1上的按钮并切换到应用程序中的另一个片段(另一个选项卡)时出错。我不明白为什么。下面的代码显示了这两个片段 片段1: depositButton.setOnClickListener(new View.OnClickListener() { @Override public voi

我从firebase“com.google.firebase.database.DatabaseException:无法将java.lang.Long类型的对象转换为类型”我在单击片段1上的按钮并切换到应用程序中的另一个片段(另一个选项卡)时出错。我不明白为什么。下面的代码显示了这两个片段

片段1:

 depositButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            depositInteger = 0;
            try {
                depositInteger = 
       Integer.parseInt(depositText.getText().toString().trim());
            } catch (NumberFormatException e) {
                if (depositText.equals("")) {
                    Toast.makeText(getActivity(), "Failed", 
                    Toast.LENGTH_SHORT).show();
                }
            }
            DatabaseReference rootRef = 
            FirebaseDatabase.getInstance().getReference();
            final DatabaseReference userRef = 
            rootRef.child("Users").child(user.getDisplayName());


            ValueEventListener eventListener = new ValueEventListener() {
                @Override
                public void onDataChange(DataSnapshot dataSnapshot) {
                    if(!dataSnapshot.hasChild("deposit")){
                        userRef.child("deposit").setValue(0);
                    } else {
                        previousDeposit = 
           dataSnapshot.child("deposit").getValue(Integer.class);
                        finalDeposit = previousDeposit + depositInteger;

                        userRef.child("deposit").setValue(finalDeposit);
                        deposit.setText(String.valueOf(finalDeposit));

                    }


                }

                @Override
                public void onCancelled(DatabaseError databaseError) {}
            };
            userRef.addListenerForSingleValueEvent(eventListener);

        }
    });
片段2:

 database.addValueEventListener(new ValueEventListener() {
                @Override
                public void onDataChange(DataSnapshot dataSnapshot) {
                    int oddsText = 0;
                    int betAmount = 0;
                    try {

                        oddsText = 
                 Integer.parseInt(mOddsText.getText().toString().trim());
                        betAmount = 
                 Integer.parseInt(mBetAmount.getText().toString().trim());

                    } catch (NumberFormatException e) {
                        if (mOddsText.equals("")) {
                            Toast.makeText(getActivity(), "Failed", 
                           Toast.LENGTH_SHORT).show();
                        } else if (mBetAmount.equals("")) {
                            Toast.makeText(getActivity(), "Failed", 
                            Toast.LENGTH_SHORT).show();
                        }
                    }

                    if (oddsText > 0 & betAmount > 0) {
                        String id = database.push().getKey();
                        database.child(user.getDisplayName()).child(id).child("odds").setValue(oddsText);
                        database.child(user.getDisplayName()).child(id).child("betAmount").setValue(betAmount);
                        database.child(user.getDisplayName()).child(id).child("date").setValue(mDate);
                        database.child(user.getDisplayName()).child(id).child("result").setValue(result);

                        Toast.makeText(getActivity(), "Done", Toast.LENGTH_SHORT).show();
                    } else {
                        Toast.makeText(getActivity(), "Failed", Toast.LENGTH_SHORT).show();
                    }
                }

                @Override
                public void onCancelled(DatabaseError databaseError) {

                }
            });
        }

您正在从数据库中检索一个以long格式返回的数字,并且直接将其转换为int会导致错误

试试这个

int number= (int) (long) dataSnapshot.getvalue()
问题就在这里

previousDeposit = `dataSnapshot.child("deposit").getValue(Integer.class);`
将其转换为

previousDeposit =(int) (long) dataSnapshot.child("deposit").getValue();

但是你的代码显示你正在将一个
Long
值转换为
Integer。class
我刚刚尝试了你的建议,它给出了相同的错误。你能告诉我错误显示在给定代码中的哪一行吗?可能重复