TextView в Android Studio Service не обновляется/возвращается к своему первоначальному тексту, когда служба выключена и Android

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 TextView в Android Studio Service не обновляется/возвращается к своему первоначальному тексту, когда служба выключена и

Сообщение Anonymous »

У меня есть сервис в моем коде, которая предназначена для отображения другого вопроса о тизере мозга каждый раз, когда требуется сервис. Я могу получить вопрос, чтобы изменить мою службу, но когда у меня выключен сервис (чтобы перейти к другому сервису/деятельности), а затем вызовут его позже, она возвращается к первоначальному значению TextVeiw (то есть, каким бы ни был первый BrainteAser) вместо изменения своего текста. Я использую карту для хранения моих вопросов Brainteaser и их ответа, и я использую две глобальные переменные, которые обновляются каждый раз, когда служба готовится к доступу к ключам и последующим вопросам Brainteaser на моей карте (это для того, чтобы изменить Brainteaser и его ответ). Переменные обновляются нормально, но все же отображается текст и ответ, не изменяются. Я посмотрел на петли, обработчики, но я не могу найти ответ на то, что я ищу, и я не понимаю их. Извините, если это простой ответ, но я, честно говоря, понятия не имею, что делать, так как это мой первый проект кодирования. Ниже приведен код для моего сервиса. Дайте мне знать, если я что -то оставил или мне нужно дать больше информации/объяснить лучше! Заранее спасибо. < /P>
class BrainScreen : Service(){

private lateinit var brainFloatView: ViewGroup
private lateinit var brainfloatWindowLayoutParems: WindowManager.LayoutParams
private var LAYOUT_TYPE: Int? = null
private lateinit var windowManger: WindowManager
private lateinit var textInput: EditText
private lateinit var checkSMALLbutton: Button
private lateinit var textDisplay: TextView
private lateinit var Qanswer: String

var brainQ = 1
var brainA = brainQ*11

override fun onBind(intent: Intent?): IBinder? {
return null
}

override fun onCreate() {
super.onCreate()

val metrics = applicationContext.resources.displayMetrics
val width = metrics.widthPixels
val height = metrics.heightPixels

val brainteaserQS: Map = mapOf(
1 to "I have keys but no locks. I have space but no room. You can enter, but you can't go outside. What am I?",
11 to "Keyboard",
2 to "If you drop me, I’m sure to crack, but smile at me and I’ll smile back. What am I?",
22 to "Mirror",
3 to "What has hands and a face, but can’t hold anything or smile?",
33 to "Clock",
4 to "The more you take, the more you leave behind. What are they?",
44 to "Footsteps"
)

windowManger = getSystemService(WINDOW_SERVICE) as WindowManager

val inflater = baseContext.getSystemService(LAYOUT_INFLATER_SERVICE) as LayoutInflater

brainFloatView = inflater.inflate(R.layout.activity_brain_screen, null) as ViewGroup

checkSMALLbutton = brainFloatView.findViewById(R.id.checkSMALLbutton)
textInput = brainFloatView.findViewById(R.id.answerInput)
//BELOW IS WHERE I SET MY TEXTVIEW VALUES (AND THE BRAINTEASER ANSWER)

textDisplay = brainFloatView.findViewById(R.id.brainteaser)
textDisplay.text = brainteaserQS[brainQ]
Qanswer = brainteaserQS[brainA].toString()

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
LAYOUT_TYPE = WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY
} else LAYOUT_TYPE = WindowManager.LayoutParams.TYPE_TOAST

brainfloatWindowLayoutParems = WindowManager.LayoutParams(
(width * 0.9).toInt(),
(height * 0.46).toInt(),
LAYOUT_TYPE!!,
WindowManager.LayoutParams.FLAG_LOCAL_FOCUS_MODE,
PixelFormat.TRANSLUCENT
)

brainfloatWindowLayoutParems.gravity = Gravity.TOP
brainfloatWindowLayoutParems.x = 0
brainfloatWindowLayoutParems.y = 0

windowManger.addView(brainFloatView, brainfloatWindowLayoutParems)

checkSMALLbutton.setOnClickListener() {

stopSelf()
windowManger.removeView(brainFloatView)

if (Qanswer == textInput.text.toString()) {
//IF THE PERSON ANSWERS THE BRAINTEASER RIGHT THE TEXTVIEW SHOULD CHANGE AS THE SERVICE SHUTS DOWN SO WHEN THE SERVICE IS CALLED AGAIN THE BRAINTEASER WILL BE DIFFERENT
brainQ += 1
brainA = brainQ*11

textDisplay.text = brainteaserQS[brainQ]
Qanswer = brainteaserQS[brainA].toString()
startService(Intent(this@BrainScreen,CorrectScreen::class.java))

} else {
startService(Intent(this@BrainScreen,TryAgainScreen::class.java))
}
}

}

}


Подробнее здесь: https://stackoverflow.com/questions/795 ... itial-text
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Android»