Size: a a a

StartAndroid Ru Kotlin

2020 June 07

I

Ilya in StartAndroid Ru Kotlin
Сейчас попробую
источник

I

Ilya in StartAndroid Ru Kotlin
Попрежнему не работает
источник

nx

n4u x in StartAndroid Ru Kotlin
Ilya
Попрежнему не работает
Нашёл решение?
источник

I

Ilya in StartAndroid Ru Kotlin
Нет, несколько вариантов перепробовал, но все работают на андройде ниже 10
источник
2020 June 12

KM

Kevin Mitnik in StartAndroid Ru Kotlin
Всех приветствую! У меня такая проблема.
Нужно вывести на TextView время, но проблема в том что я работаю во Фрагменте через поток Корутины, делаю цикл и вытаскиваю в var все временные показатели, а как их отобразить на экране вот проблема, в MainActivity.kt работает runOnUiThread() в Фрагменте его не что делать.
источник

KM

Kevin Mitnik in StartAndroid Ru Kotlin
class PovsevdnevFragment : Fragment() {

   private var start: Boolean = false
   private var intHour: Int = 0
   private var intMin: Int = 0
   private var intSec: Int = 0


   override fun onAttach(context: Context) {
       super.onAttach(context)

       GlobalScope.launch {
           start = true
           while (start) {
               val now: Calendar = Calendar.getInstance()
               intHour = now.get(Calendar.HOUR_OF_DAY)
               intMin = now.get(Calendar.MINUTE)
               intSec = now.get(Calendar.SECOND)
               Log.d("Log_tag", "Thread")
               delay(1000)

           }
       }

   }
источник

KM

Kevin Mitnik in StartAndroid Ru Kotlin
Если я сделаю здесь DigitalClock1.text = "$intHour:$intMin:$intSec"
источник

KM

Kevin Mitnik in StartAndroid Ru Kotlin
то приложение будет возвращать ошибку из-за того что я это делаю не в основном потоке
источник

А

Андрей in StartAndroid Ru Kotlin
Kevin Mitnik
то приложение будет возвращать ошибку из-за того что я это делаю не в основном потоке
Оберните твой метод, который текст сетит в withContext(Dispatchers.Main.Immidiate) и все заработает.

Хотя использование твое очень сомнительное)
источник

KM

Kevin Mitnik in StartAndroid Ru Kotlin
withContext(Dispatchers.Main.immediate){
                   DigitalClock1.text = "$intHour:$intMin:$intSec"
источник

KM

Kevin Mitnik in StartAndroid Ru Kotlin
Так?
источник

KM

Kevin Mitnik in StartAndroid Ru Kotlin
Неполучилось
источник

KM

Kevin Mitnik in StartAndroid Ru Kotlin
GlobalScope.launch {
           start = true
           while (start) {
               val now: Calendar = Calendar.getInstance()
               intHour = now.get(Calendar.HOUR_OF_DAY)
               intMin = now.get(Calendar.MINUTE)
               intSec = now.get(Calendar.SECOND)
               Log.d("Log_tag", "Thread")
               delay(1000)
               withContext(Dispatchers.Main.immediate){
                   DigitalClock1.text = "$intHour:$intMin:$intSec"
               }
           }
       }
источник

KM

Kevin Mitnik in StartAndroid Ru Kotlin
Вернуло ошибку
источник

KM

Kevin Mitnik in StartAndroid Ru Kotlin
java.lang.IllegalStateException: DigitalClock1 must not be null
       at ru.simaj.dejurniy.fragments.PovsevdnevFragment$onAttach$1$1.invokeSuspend(PovsevdnevFragment.kt:38)
источник

KM

Kevin Mitnik in StartAndroid Ru Kotlin
Может че не так сделал?
источник

E

E R A in StartAndroid Ru Kotlin
Да
источник

KM

Kevin Mitnik in StartAndroid Ru Kotlin
А че не так то? Как правильно нужно сделать?
источник

А

Андрей in StartAndroid Ru Kotlin
Kevin Mitnik
java.lang.IllegalStateException: DigitalClock1 must not be null
       at ru.simaj.dejurniy.fragments.PovsevdnevFragment$onAttach$1$1.invokeSuspend(PovsevdnevFragment.kt:38)
У тебя переменная твоя, куда ты сетишь,  нулевая.... проинициализируй ее..
источник

KM

Kevin Mitnik in StartAndroid Ru Kotlin
в фрагменте? или в MainActivity?
источник