使用AddvalueListener时,“java.lang.Long无法强制转换为java.lang.String”

时间:2018-02-21 00:00:20

标签: android firebase firebase-realtime-database typeerror

enter image description here我正在开发一个带有Firebase后端的Android应用程序。 Firebase对我来说很新,所以我有几个问题。

这是具有2个EditText视图的应用程序的MainActivity,它将两个值“Name”和“Contact”写入Firebase数据库。当他们更改它时,它会检索值,然后通过log.v方法记录它们。

我收到以下错误消息:“java.lang.ClassCastException:java.lang.Long无法强制转换为java.lang.String”。错误在AddValueEventListener方法中。

我的数据库结构

completefirebasetutorial

- 联系方式:452145233

- 姓名:“Barre”

任何人都可以帮助我吗?

public class MainActivity extends AppCompatActivity {

FirebaseDatabase database;
DatabaseReference myRef;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    database = FirebaseDatabase.getInstance();
    myRef = database.getReference();

    myRef.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            //map is a data type which stores a key and a value pair
            Map<String,String> map = (Map<String,String>)dataSnapshot.getValue();
            String name = map.get("Name");
            String contact = map.get("Contact");

            Log.v("Name", name);
            Log.v("Contact",contact);
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {
        }
    });
}

public void ButtonClicked(View view) {
    EditText Nametextbox = (EditText) findViewById(R.id.EnterMessage);
    EditText Numbertextbox = (EditText) findViewById(R.id.EnterContact);

    String objectName = Nametextbox.getText().toString();
    myRef = database.getReference("Users").child(objectName);
    myRef.child("Name").setValue(Nametextbox.getText().toString());
    myRef.child("Contact").setValue(Numbertextbox.getText().toString());
}
}

1 个答案:

答案 0 :(得分:1)

看起来您的电话号码存储为数字(例如Long)而非String。您可能需要更改数据库架构或JSON或任何源。

您的联系信息将存储为值452145233,而不是字符串"452145233"