简体   繁体   中英

How to add or find textview outside of the mainactivity in Android Kotlin?

package com.example.asyntask

import android.content.ContentValues.TAG

import android.os.AsyncTask

import androidx.appcompat.app.AppCompatActivity

import android.os.Bundle

import android.util.Log

import android.widget.Button

import android.widget.TextView

import kotlinx.android.synthetic.main.activity_main.*

class MainActivity : AppCompatActivity() {

override fun onCreate(savedInstanceState: Bundle?) {

    super.onCreate(savedInstanceState)

    setContentView(R.layout.activity_main)

    btnStart.setOnClickListener {

        val tvCounter=findViewById<TextView>(R.id.tvCounter)

        CountTask().execute(5)

    }

}

}

class CountTask() : AsyncTask<Int, Int, Unit>() {

private val tag: String? = "Async"

override fun doInBackground(vararg params: Int?) {

    Log.d(tag, "doInBackground: started")

    val n: Int = params[0]!!

    for (i in 0 until n) {

        wait1Sec()

        publishProgress(i)

    }

}

private fun wait1Sec():Unit{

    val start =System.currentTimeMillis()

    while(System.currentTimeMillis()<start+1000){}

}


override fun onProgressUpdate(vararg values: Int?) {

    super.onProgressUpdate(*values)

    //WANT TO WRITE TEXT IN TEXT VIEW BUT HOW TO GET VIEW HERE

}

}

Please try to create the Callback with progressupdate from asynchtask to mainactivity

like:

Interface UpdateListener{
   fun onProgressUpdate(progress:Int);
}

class CountTask(val listener:UpdateListener) : AsyncTask<Int, Int, Unit>() {

   override fun onProgressUpdate(vararg values: Int?) {
    super.onProgressUpdate(*values)
    //WANT TO WRITE TEXT IN TEXT VIEW BUT HOW TO GET VIEW HERE
     listener.onpreogressupdate(...)
   }  
}

override fun onCreate(savedInstanceState: Bundle?) {

    super.onCreate(savedInstanceState)

    setContentView(R.layout.activity_main)

    btnStart.setOnClickListener {

        val tvCounter=findViewById<TextView>(R.id.tvCounter)

         CountTask(object:listener:UpdateListener{
         
             override fun onProgressUpdate(progress:Int){

                //TODO update here
             }
         
         }).execute(5)

    }

}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM