Мне нужно сделать приложение со следующей логикой: нажимаю кнопку "открыть" (в верхней части) -> открывается галерея, выбирается изображение и вставляется посреди экрана; внизу есть кнопка "поехали" -> открывается новая активити, в которой вставлено это изображение.
Суть проблемы: не могу понять ка передать расположение (contentUri) из первой активити во вторую, так как это расположение я получаю внутри переопределённого onActivityResult(). То есть расположение определяется внутри onActivityResult(), а переход в новую активити происходит при нажатии кнопки, на которой весит отдельная функция newAct(). Я смог произвести запуск новой активити и соответственно передачу данных с помощью putExtra только прямо из onActivityResult() (выбрал картинку и сразу переход в новую актвити), но тогда кнока "процесс" не задействуется. Пытался сделать глобальный intent, но приложение крашится
Объявите в вашей активити, где вы обрабатываете onActivityResult()
, поле uri
, которое вы проинициализируете в этом методе. А затем, при нажатии кнопки, у вас будет доступ к uri
, т.к. оно лежит в поле. Однако, не забудьте добавить проверку, т.к. если нажать на кнопку до того, как вы проинициализируете поле, вместо нужного uri
будет передан null
(а в случае с Kotlin, если использовать lateinit
— получите исключение; либо также можете использовать Uri?
тип и проверять на null
, чтобы узнать, было ли поле проинициализировано; а также с последней версии Kotlin можно проверить, было ли проинициализировано lateinit
-поле).
class MyActivity : Activity() {
private lateinit var uri: Uri
private lateinit var button: Button
public override fun onCreate(savedInstanceState: Bundle) {
super.onCreate(savedInstanceState)
button = findViewById<View>(R.id.my_button) as Button
button.setOnClickListener {
startActivity(Intent().putExtra("uri", uri.toString()))
}
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent) {
super.onActivityResult(requestCode, resultCode, data)
uri = // получите uri
}
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Для подключения к бд и работы с ней использую две библиотеки commons dbutils и commons dbcp2 (пул подключений к бд)
Здравствуйте! Нужно создать "Планировщик задач на Java"Мы с другом надумали: