Приложение вылетает, когда я переключаюсь на EasyFragmentAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Приложение вылетает, когда я переключаюсь на EasyFragment

Сообщение Anonymous »

class EasyFragment : Fragment() {
private lateinit var mainLayout: ConstraintLayout
private lateinit var textViewScore: TextView
private lateinit var textViewStrikes: TextView
private lateinit var textViewInstruction: TextView
private lateinit var button: Button
private lateinit var box1: TextView
private lateinit var box2: TextView

private var isGameStarted = false
private var score = 0
private var strikes = 0

override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_easy, container, false)
}

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
mainLayout = view.findViewById(R.id.main)
textViewScore = view.findViewById(R.id.textViewScore)
textViewStrikes = view.findViewById(R.id.textViewStrikes)
textViewInstruction = view.findViewById(R.id.textViewInstruction)
button = view.findViewById(R.id.button)
box1 = view.findViewById(R.id.textViewBox1)
box2 = view.findViewById(R.id.textViewBox2)
setButtonClickListener()
setBoxClickListeners()
}

private fun setButtonClickListener() {
button.setOnClickListener {
if (isGameStarted) {
resetGame()
} else {
startGame()
}
}
}

private fun setBoxClickListeners() {
box1.setOnClickListener {
if (box1.text.isNotEmpty()) {
checkAnswer(box1.text.toString().toInt())
}
}
box2.setOnClickListener {
if (box2.text.isNotEmpty()) {
checkAnswer(box2.text.toString().toInt())
}
}
}

private fun startGame() {
resetGameVars()
generateAndDisplayNums()
resetTextColors()
isGameStarted = true
button.text = "RESTART"
textViewInstruction.text = "Tap the larger number!"
}

private fun resetGameVars() {
score = 0
strikes = 0
textViewScore.text = "Score: $score"
textViewStrikes.text = "Strikes: $strikes"
}

private fun resetGame() {
resetGameVars()
generateAndDisplayNums()
resetTextColors()
button.text = "RESTART"
}

private fun generateAndDisplayNums() {
val (number1, number2) = generateRandNums(1, 100)
box1.text = number1.toString()
box2.text = number2.toString()
box1.isClickable = true
box2.isClickable = true
}

private fun checkAnswer(selectedNumber: Int) {
val number1 = box1.text.toString().toInt()
val number2 = box2.text.toString().toInt()

val largerNumber = maxOf(number1, number2)

if (selectedNumber == largerNumber) {
correctAnswers()
} else {
incorrectAnswers()
}
}

private fun correctAnswers() {
score++
textViewScore.text = "Score: $score"

textViewScore.setTextColor(Color.YELLOW)
textViewStrikes.setTextColor(Color.BLACK)
mainLayout.setBackgroundColor(Color.GREEN)

if (score == 10) {
endGame(true)
} else {
generateAndDisplayNums()
}
}

private fun incorrectAnswers() {
strikes++
textViewStrikes.text = "Strikes: $strikes"

textViewStrikes.setTextColor(Color.YELLOW)
textViewScore.setTextColor(Color.BLACK)
mainLayout.setBackgroundColor(Color.RED)

if (strikes == 3) {
endGame(false)
} else {
generateAndDisplayNums()
}
}

private fun endGame(won: Boolean) {
isGameStarted = false
val message = if (won) {
textViewScore.setTextColor(Color.GREEN)
"Congrats, you won! :)"
} else {
textViewStrikes.setTextColor(Color.RED)
"You Lost! :("
}

Toast.makeText(requireContext(), message, Toast.LENGTH_SHORT).show()
clearNumberBoxes()
resetBackgroundAndText()
}

private fun clearNumberBoxes() {
box1.text = ""
box2.text = ""
box1.isClickable = false
box2.isClickable = false
}

private fun resetBackgroundAndText() {
mainLayout.setBackgroundColor(Color.parseColor("#FFFDEF74"))
textViewInstruction.text = "Tap restart to play again!"
button.text = "RESTART"
}

private fun generateRandNums(min: Int, max: Int): Pair {
val number1 = Random.nextInt(min, max)
var number2: Int

do {
number2 = Random.nextInt(min, max)
} while (number1 == number2)

return Pair(number1, number2)
}

private fun resetTextColors() {
textViewScore.setTextColor(Color.BLACK)
textViewStrikes.setTextColor(Color.BLACK)
mainLayout.setBackgroundColor(Color.parseColor("#FFFDEF74"))
}
}`

I'm pretty new to android development so I don't know what is causing this but whenever I click on my Easy Mode button in the Home fragment the app crashes


Подробнее здесь: https://stackoverflow.com/questions/792 ... syfragment
Ответить

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

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

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

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

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