Изменение цвета фона макета

Установите новому активити новый цвет фона, отличающийся от первого:

  1. В файле colors.xml, добавьте новый цвет:
<color name="screenBackground2">#26C6DA</color>

2. В макете для второго активити, установите элементу ConstraintLayout новый цвет. Это можно сделать в панели свойств или в коде XML:

android:background="@color/screenBackground2"

Макет для второго активити готов. Вы можете посмотреть его на вкладке Дизайн.

Теперь пришло время реализовать переход на второй экран.

Запуск второго активити

Интент – это объект для обмена между активити, который абстрактно представляет собой намерение выполнить какое-либо действие. В основном интенты используются для запуска активити. Как только интент отправляется, его получает система Android, и считывает информацию в нем. Для открытия второго экрана, нам нужно создать и отправить объект Intent с указанием активити, которое нужно открыть. Затем вызвать метод startActivity() с передачей объекта Intent, который отправит это сообщение фреймворку Android, который откроет это активити.

Выполните такие шаги:

  1. Откройте класс MainActivity.kt.
  2. Добавьте метод  randomMe(), который будет вызываться, когда нажата кнопка Random.Если вы забыли, как реализовать такой метод, посмотрите на код методов toastMe() и countMe().
  3. Добавьте код для запуска второго активити в тело метода randomMe():
// Create an Intent to start the second activity

val randomIntent = Intent(this, SecondActivity::class.java)



// Start the new activity.

startActivity(randomIntent)

4. Что еще нужно сделать, чтобы связать метод randomMe() с кнопкой Random? Сделайте это самостоятельно. Ищите подсказки в прошлом уроке.

5. Запустите приложение. Нажмите кнопку Random. Второе активити откроется, но оно пока не показывает случайный номер.

Передача информации между активити

На втором экране при открытии должно отображаться случайное число из диапазона от нуля до текущего значения счетчика на первом экране. Для этого второму активити требуется текущее значение счетчика. Мы можем передать эту информацию в интенте, используя метод putExtra(). Второе активити может получить интент, который запустил его, и извлечь данные Extra Data из этого интента.

Обновите MainActivity для передачи дополнительных данных второму активити

  1. В классе SecondActivity.kt, объявите статическую переменную TOTAL_COUNT, для использования ее в качестве ключа для Extra Data.
companion object {

const val TOTAL_COUNT = "total_count"

}

2. Изменим метод randomMe(). Сначала получим текущее значение счетчика из TextView. Конвертируем значение в тип int, затем с помощью метода putExtra() добавим значение в Intent. Метод putExtra() принимает ключ и значение; в качестве ключа укажем константу TOTAL_COUNT из SecondActivity.kt.

randomIntent.putExtra(SecondActivity.TOTAL_COUNT, count)

Вот полный код метода randomMe():

fun randomMe (view: View) {

// Create an Intent to start the second activity

val randomIntent = Intent(this, SecondActivity::class.java)



// Get the current value of the text view.

val countString = textView.text.toString()



// Convert the count to an int

val count = Integer.parseInt(countString)



// Add the count to the extras for the Intent.

randomIntent.putExtra(SecondActivity.TOTAL_COUNT, count)



// Start the new activity.

startActivity(randomIntent)

}

Обновите SecondActivity для вычисления и отображения случайного числа

Мы написали код для отправки текущего значения счетчика во второе активити. На следующем шаге настроим SecondActivity.kt для получения и использования значения счетчика.

Напишем метод для извлечения значения счетчика и вычисления на его основе случайного числа

  1. В классе SecondActivity.kt, добавим метод showRandomNumber() без аргументов.
  2. Пропишем в этом методе генерацию и отображение случайного числа, максимальное значение которого соответствует значению счетчика.
  3. Используем метод getIntent() для получения интента, запустившего это активити. Используем метод getIntExtra() для получения extra data из интента; аргументами являются ключ или значение по умолчанию при его отсутствии.

Внимание: при получении данных из интента, вы должны знать их тип. Используйте соответствующий getter метод, например getStringExtra() или getIntExtra().

Полный код метода showRandomNumber():

// Android extensions import statements for the two views to update

import kotlinx.android.synthetic.main.activity_second.textview_random

import kotlinx.android.synthetic.main.activity_second.textview_label



//Other class code...



fun showRandomNumber() {

   // Get the count from the intent extras

   val count = intent.getIntExtra(TOTAL_COUNT, 0)



   // Generate the random number

   val random = Random()

   var randomInt = 0

   // Add one because the bound is exclusive

   if (count > 0) {

       // Add one because the bound is exclusive

       randomInt = random.nextInt(count + 1)

   }



   // Display the random number.

   textview_random.text = Integer.toString(randomInt)



   // Substitute the max value into the string resource

   // for the heading, and update the heading

   textview_label.text = getString(R.string.random_heading, count)

}

Обновите метод onCreate()

Метод onCreate() вызывается при старте активити. Текущий метод onCreate() для SecondActivity устанавливает макет разметки для экрана. Добавим вызов метода showRandomNumber() в метод onCreate(), он будет обновлять текстовое поле для отображения случайного числа.

  1. Изменим метод onCreate() в SecondActivity. Добавим в конце вызов метода showRandomNumber().
override fun onCreate(savedInstanceState: Bundle?) {

   super.onCreate(savedInstanceState)

   setContentView(R.layout.activity_second)

   showRandomNumber()

}

2. Запустим приложение. Нажмем кнопку счетчика на некоторое время, затем нажмем кнопку Random button. В новом окне должно отобразиться случайное число.

На этом наш урок подошел к концу. Исходный код урока вы можете скачать по ссылке. Вопросы можно задавать в комментариях.

Следующий урок, в котором мы изучим жизненный цикл активити:


admin

Обучающие видео-уроки по разработке приложений для операционной системы Android. Мы поможем любому новичку стать продвинутым разработчиком андроид-приложений!

Добавить комментарий

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.