Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/204.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
Java Android Studio Kotlin出现dataSnapshot.getValue错误_Java_Android_Firebase_Kotlin - Fatal编程技术网

Java Android Studio Kotlin出现dataSnapshot.getValue错误

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说: 类文本的左侧只允许类 我应该如何处理此代码?有没有其他

在最近的一个项目中,我将一个java文件转换为kotlin文件,问题是我在代码中遇到了一个错误:

 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解决了。