Метод 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