我試圖從Firebase
獲取一些數據,但得到這個錯誤:java.lang.ClassCastException: java.lang.String cannot be cast to java.util.Map
同時試圖這樣做。獲取'java.lang.ClassCastException:java.lang.String不能轉換爲java.util.Map'而試圖從firebase中獲取數據
這是我正在嘗試;
public void retrieveUserCounterAccepted() {
databaseReferenceUsers = FirebaseDatabase.getInstance().getReferenceFromUrl("https://appname-e1a13.firebaseio.com/users/");
databaseReferenceUsers.child(uid).addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
// error on the line below
newRequestAcceptedCounter = (Map<String, String>) dataSnapshot.getValue();
// error on line above
String requestAcceptedCounter = newRequestAcceptedCounter.get("requestsAccepted");
String requestsPostedCounter = newRequestAcceptedCounter.get("requestsPosted");
Menu menu = navigationView.getMenu();
MenuItem requests_posted = menu.findItem(R.id.requests_posted_counter);
requests_posted.setTitle(requestsPostedCounter);
MenuItem requests_accepted = menu.findItem(R.id.requests_accepted_counter);
requests_accepted.setTitle(requestAcceptedCounter);
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String s) {
newRequestAcceptedCounter = (Map<String, String>) dataSnapshot.getValue();
String requestAcceptedCounter = newRequestAcceptedCounter.get("requestsAccepted");
String requestsPostedCounter = newRequestAcceptedCounter.get("requestsPosted");
Menu menu = navigationView.getMenu();
MenuItem requests_posted = menu.findItem(R.id.requests_posted_counter);
requests_posted.setTitle(requestsPostedCounter);
MenuItem requests_accepted = menu.findItem(R.id.requests_accepted_counter);
requests_accepted.setTitle(requestAcceptedCounter);
}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
這是怎麼回事?
請讓我知道。
dataSnapshot.getValue()返回一個字符串,而不是地圖。您將它作爲地圖進行投射,但顯然它正在返回一個字符串 – basic
@basic我已經在問題中提到過了。 –
我假設這意味着'dataSnapshot.getValue()'的返回值是一個'String',並且您試圖將其轉換爲'Map'。仔細檢查您要放入數據庫的數據,以便將其輸入爲地圖。 –
nukeforum