tedris
tedris

Reputation: 1228

why dont set this value?

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

Answers (1)

Clay07g
Clay07g

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

Related Questions