Java Android Studio Kotlin出现dataSnapshot.getValue错误
在最近的一个项目中,我将一个java文件转换为kotlin文件,问题是我在代码中遇到了一个错误:Java Android Studio Kotlin出现dataSnapshot.getValue错误,java,android,firebase,kotlin,Java,Android,Firebase,Kotlin,在最近的一个项目中,我将一个java文件转换为kotlin文件,问题是我在代码中遇到了一个错误: val map = dataSnapshot.getValue<Map<*, *>>(Map<*, *>::class.java) val map=dataSnapshot.getValue(map::class.java) 我在“Map::class”下面画了一条红线,android studio说: 类文本的左侧只允许类 我应该如何处理此代码?有没有其他
val map = dataSnapshot.getValue<Map<*, *>>(Map<*, *>::class.java)
val map=dataSnapshot.getValue(map::class.java)
我在“Map::class”下面画了一条红线,android studio说:
类文本的左侧只允许类
我应该如何处理此代码?有没有其他的写作方法
下面是一个相对的kotlin代码片段:
val messageText = messageArea!!.text.toString()
if (messageText != "") {
val map = HashMap<String, String>()
map.put("message", messageText)
map.put("user", UserDetails.username)
reference1!!.push().setValue(map)
reference2!!.push().setValue(map)
messageArea!!.setText("")
}
}
reference1!!.addChildEventListener(object : ChildEventListener {
override fun onChildAdded(dataSnapshot: DataSnapshot, s: String) {
val map = dataSnapshot.getValue<Map<*, *>>(Map<*, *>::class.java)
val message = map.get("message").toString()
val userName = map.get("user").toString()
String messageText = messageArea.getText().toString();
if(!messageText.equals("")){
Map<String, String> map = new HashMap<String, String>();
map.put("message", messageText);
map.put("user", UserDetails.username);
reference1.push().setValue(map);
reference2.push().setValue(map);
messageArea.setText("");
}
}
});
reference1.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
Map map = dataSnapshot.getValue(Map.class);
String message = map.get("message").toString();
String userName = map.get("user").toString();
val messageText=messageArea!!。text.toString()
如果(messageText!=“”){
val map=HashMap()
map.put(“message”,messageText)
map.put(“用户”,UserDetails.username)
reference1!!.push().setValue(映射)
reference2!!.push().setValue(映射)
messageArea!!.setText(“”)
}
}
参考文献1!!。addChildEventListener(对象:ChildEventListener{
覆盖有趣的onChildAdded(dataSnapshot:dataSnapshot,s:String){
val map=dataSnapshot.getValue(map::class.java)
val message=map.get(“message”).toString()
val userName=map.get(“用户”).toString()
原始java代码段:
val messageText = messageArea!!.text.toString()
if (messageText != "") {
val map = HashMap<String, String>()
map.put("message", messageText)
map.put("user", UserDetails.username)
reference1!!.push().setValue(map)
reference2!!.push().setValue(map)
messageArea!!.setText("")
}
}
reference1!!.addChildEventListener(object : ChildEventListener {
override fun onChildAdded(dataSnapshot: DataSnapshot, s: String) {
val map = dataSnapshot.getValue<Map<*, *>>(Map<*, *>::class.java)
val message = map.get("message").toString()
val userName = map.get("user").toString()
String messageText = messageArea.getText().toString();
if(!messageText.equals("")){
Map<String, String> map = new HashMap<String, String>();
map.put("message", messageText);
map.put("user", UserDetails.username);
reference1.push().setValue(map);
reference2.push().setValue(map);
messageArea.setText("");
}
}
});
reference1.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
Map map = dataSnapshot.getValue(Map.class);
String message = map.get("message").toString();
String userName = map.get("user").toString();
String messageText=messageArea.getText().toString();
如果(!messageText.equals(“”){
Map Map=newhashmap();
map.put(“message”,messageText);
map.put(“用户”,UserDetails.username);
reference1.push().setValue(映射);
reference2.push().setValue(map);
messageArea.setText(“”);
}
}
});
reference1.addChildEventListener(新的ChildEventListener(){
@凌驾
公共void onChildAdded(DataSnapshot DataSnapshot,字符串s){
Map Map=dataSnapshot.getValue(Map.class);
String message=map.get(“message”).toString();
字符串userName=map.get(“用户”).toString();
尝试铸造它
val map = dataSnapshot.getValue(Map::class.java) as Map<String, String>
val map=dataSnapshot.getValue(map::class.java)作为映射
您可能希望取消“未经检查的强制转换”的警告,但这没关系。基于此答案,您可以选择使用Kotlin的功能并实现类似的功能来扩展DataSnapshot
inline fun <reified T> DataSnapshot.getValue(): T? {
return getValue(T::java.class)
}
inline fun DataSnapshot.getValue():T{
返回getValue(T::java.class)
}
或者基于Firebase的DataSnapshot,您可以像这样获得贴图值
val map = dataSnapshot.getValue()
if (map is Map<*, *>) {
val message = map["message"].toString()
val userName = map["user"].toString()
}
val map=dataSnapshot.getValue()
如果(地图是地图){
val message=map[“message”].toString()
val userName=map[“user”].toString()
}
你能发布原始的java代码吗?我用java代码编辑了这篇文章。也许你能在这篇文章中找到你的答案。谢谢大家,probelm解决了。