java.lang.Long 无法投射到 java.lang.String android studio settext

java.lang.Long cannot be cast to java.lang.String android studio settext

有谁知道如何解决这个问题?

java.lang.ClassCastException: java.lang.Long cannot be cast to java.lang.String

错误行

String data = (String) dataSnapshot.child("money").getValue();

FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
    final String userUid = user.getUid();
    DatabaseReference ref = FirebaseDatabase.getInstance().getReference();
    ref.child("Users").child(userUid).addListenerForSingleValueEvent(new ValueEventListener() {

        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
       ERROR LINE     String data = (String) dataSnapshot.child("money").getValue();
            moneyText.setText(data);

        }

        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {

        }
    });

以这种方式更改您的代码

String data = ((Long) dataSnapshot.child("money").getValue()).toString();

您的数据很长,您正在转换为字符串

在您的错误行中,您试图将一个对象转换为另一个不受支持的对象。这样做的正确方法是在字符串 class 中使用 valueOf 方法,如下所示:

String data = String.valueOf(dataSnapshot.child("money").getValue());

长字符串示例:

long testL ong = 10;
String stringLoc = Long.toString(testLong );
System.out.println("str : " + stringLoc );

在您的代码中尝试将 Long 转换为 String。你可以试试下面的代码。

 String data = Long.toString(dataSnapshot.child("money").getValue());

你的dataSnapshot.child("money").getValue() 是 Long 类型,您直接转换为字符串,您可以像下面这样使用以避免错误。

String data = String.valueOf(dataSnapshot.child("money").getValue());