Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
302 of 502 menu
◀ ▶

Метод setComponent

Метод setComponent класса Intent делает intent явным: система не ищет обработчик по action, а открывает заданный ComponentName. Для activity часто достаточно конструктора Intent(context, ActivityClass::class.java), но setComponent нужен для гибкой сборки.

Синтаксис

intent.setComponent(ComponentName(this, SecondActivity::class.java))

Параметры

Параметр Описание
component Пара пакет+класс компонента в ComponentName.

Пример

Давайте явно укажем SecondActivity:

import android.content.ComponentName import android.content.Intent import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.compose.material3.Button import androidx.compose.material3.Text class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { Button(onClick = { val intent = Intent() intent.setComponent( ComponentName(this@MainActivity, SecondActivity::class.java), ) startActivity(intent) }) { Text(text = "abcde") } } } }

На экране кнопка откроет именно SecondActivity без выбора из списка приложений.

Пример

Давайте передадим extra вместе с setComponent:

import android.content.ComponentName import android.content.Intent import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.compose.material3.Button import androidx.compose.material3.Text class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { Button(onClick = { val intent = Intent().apply { setComponent( ComponentName(this@MainActivity, SecondActivity::class.java), ) putExtra("note", "12345") } startActivity(intent) }) { Text(text = "12345") } } } }

На экране SecondActivity получит note со строкой "12345".

Смотрите также

  • метод setPackage,
    ограничение пакета без точного класса
  • метод startActivity,
    запуск явного intent
  • метод putExtra,
    данные вместе с компонентом
  • класс Intent,
    где объявлен setComponent
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить