Ответ
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val button = findViewById<Button>(R.id.button)
button.setOnClickListener {
val intent = Intent(this, SecondActivity::class.java)
intent.putExtra("KEY", "Hello from MainActivity")
startActivity(intent)
}
}
}
class SecondActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_second)
val message = intent.getStringExtra("KEY")
Toast.makeText(this, message, Toast.LENGTH_SHORT).show()
}
}
Activity - основной компонент Android для UI. В примере:
- MainActivity создает layout и обрабатывает клик
- По клику запускается SecondActivity через Intent с передачей данных
- SecondActivity получает данные и показывает Toast
Не забудьте объявить Activity в AndroidManifest.xml. Для навигации между экранами лучше использовать Navigation Component.
Ответ 18+ 🔞
Э, сабака сука, ну ты глянь, какой простенький примерчик. Ёпта, как будто на дворе 2002-й год, честное слово. Сейчас разжуём, что тут у нас происходит, блядь.
Вот смотри, есть у нас MainActivity. Это типа главный экран, с которого всё начинается. В методе onCreate (это когда активность только рождается, понимаешь) мы делаем две вещи: выставляем наш интерфейс из файлика activity_main.xml и находим на нём кнопку. Кнопку эту, сука, мы ловим по её айдишнику R.id.button.
Дальше самое интересное. Мы на эту кнопку вешаем слушатель кликов. То есть, когда юзер тыкнет по ней пальцем (или хуем, если у него такой телефон), выполнится наш код внутри. А код-то что делает? Ёб твою мать, он создаёт намерение — Intent. Это такая штука, которая говорит системе: «Эй, запусти-ка мне другую активность, вот эту SecondActivity». И не просто запусти, а ещё и передай с собой строчку "Hello from MainActivity" под ключиком "KEY". И команда startActivity(intent) это намерение выполняет. Всё, поехали на второй экран.
Теперь SecondActivity. Она, блядь, тоже в onCreate выставляет свой интерфейс (activity_second.xml). А потом начинает шарить по карманам того самого Intent, который её сюда привёз. Ищет: «А где тут у меня данные по ключу "KEY"?». Находит нашу строчку, и, чтобы не пропадало добро, показывает её пользователю в виде маленького всплывающего сообщения — Toast. Вот и вся магия, ни хуя себе сложного.
Но стоп, чувак, подозрение ёбать чувствую. Ты ж не думаешь, что просто написал эти два класса и всё заработает? Доверия ёбать ноль к такой простоте. Забыл главное — объявить эти активности в манифесте, в файле AndroidManifest.xml. Если не объявишь, система про них нихуя не узнает и будет орать, что не нашла активность. Выглядит это примерно так:
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".SecondActivity" />
И ещё, блядь, важный момент. Этот способ с интентами — он рабочий, старый, как говно мамонта. Но если у тебя в приложении больше двух экранов, начинается пиздопроебибна с управлением этими самыми интентами, стеками и назад кнопкой. Поэтому сейчас все умные дяди советуют использовать Navigation Component. Эта штука позволяет всю навигацию между экранами (или фрагментами) описать в одном наглядном графе, как карту метро, и не париться с кучей кода. Выглядит это овердохуища цивильнее и надёжнее.
Короче, пример-то рабочий, для понимания основ сойдёт. Но в реальном проекте сразу смотри в сторону навигационного компонента, а то потом волнение ёбать переделывать.