Reputation: 1228
I want set my gorterilecekkart
variable in code, but it will not change. It always sees the first value instead. How can I solve this problem? Please help me. I don't know English very well sorry. But in my code I have added comments.
class Sahnem : AppCompatActivity() {
var gorterilecekkart=5
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_sahnem)
val parsUser = ParseUser.getCurrentUser().email
val queryTercih = ParseQuery.getQuery<ParseObject>("Tercih")
queryTercih.whereEqualTo("user", parsUser.toString())
queryTercih.findInBackground { objects, e ->
if (objects.isEmpty()){
}else{
var bas:String=objects[0].get("basla").toString()
var bit:String=objects[0].get("bitir").toString()
txvBasla.setText(bas)
txvBitir.setText(bit)
bitir=bit.toInt()
baslat=bas.toInt()
gorterilecekkart=bitir-baslat // i see log 3
}
println("116 "+bitir)
gorterilecekkart=bitir-baslat
println("119 "+gorterilecekkart) // i see log 3
}
println("124 "+gorterilecekkart) // why i dont see log 3, i see 5
Upvotes: 0
Views: 36
Reputation: 1105
It looks like ParseQuery#findInBackground(...)
runs the callback lambda in a background thread. Documentation here.
This means that:
println("124 "+gorterilecekkart) // why i dont see log 3, i see 5
Actually gets executed first, before the lambda is done executing.
In order to fix this, you need to use ParseQuery#find(...)
instead, or somehow find a way to wait until the background thread is done executing your lambda before checking the value of gorterilecekkart
.
Upvotes: 1