类型不匹配:推断的类型是String?但是字符串是预期的

时间:2018-10-22 02:45:02

标签: android firebase-realtime-database kotlin

由于此行在我的代码中:

var myRef = child_myRef.child(FirebaseAuth.getInstance().uid) 

Type mismatch: inferred type is String? but String was expecte

5 个答案:

答案 0 :(得分:0)

您可以将其替换为child_myRef.child(FirebaseAuth.getInstance().uid!!)或检查null

答案 1 :(得分:0)

原因是您的FirebaseAuth.getInstance().uidString?(可以为Null),但是输入的.child()需要String(无Null),因此请在此之前检查null :

FirebaseAuth.getInstance().uid?.let{
  var myRef = child_myRef.child(it) 
  .....
}

或者,如果您确保FirebaseAuth.getInstance().uid从不为空,则可以使用FirebaseAuth.getInstance().uid!!,但这不是一个好方法

答案 2 :(得分:0)

var myRef = child_myRef.child(FirebaseAuth.getInstance().getCurrentUser().getUid())
myRef.child("jina").setValue(Fname.text.toString())
myRef.child("tarehe").setValue(bDate.text.toString())
myRef.child("place").setValue(place.text.toString())


希望您尝试将所有详细信息放在用户ID下。
因此,如果是这种情况,请更改您对myRef的引用。
因此,您可以将上述所有详细信息放在用户ID下。

答案 3 :(得分:0)

这是因为FirebaseAuth.getInstance().uid的值可以是null,因此请首先检查其值是否不为null,然后执行操作。

if(FirebaseAuth.getInstance().uid!=null){
var myRef = child_myRef.child(FirebaseAuth.getInstance().uid)
myRef.child("jina").setValue(Fname.text.toString())
myRef.child("tarehe").setValue(bDate.text.toString())
myRef.child("place").setValue(place.text.toString())

}
  

如果您使用FirebaseAuth.getInstance().uid!!进行检查,这将导致   Null Pointer Exception,如果您的应用崩溃,   FirebaseAuth.getInstance().uid的值为null,因此请尝试   以上方法(如我所写的示例)

答案 4 :(得分:0)