OnActivityResult не срабатывает при завершении

Следующее приложение работает как положено:

import android.app.Activity
import android.content.Intent
import android.graphics.BitmapFactory
import android.app.WallpaperManager

class ChwallActivity < Activity
  def onCreate(state)
    super
    setContentView R.layout.main
  end

  $Override
  def onStart
    super
    Intent intent = Intent.new(Intent.ACTION_PICK)
    intent.setType "image/*"
    startActivityForResult Intent.createChooser(intent, "Select Picture"), 0
  end

  $Override
  def onActivityResult(requestCode, resultCode, data:Intent)
    super
    thumb = BitmapFactory.decodeFile "/storage/sdcard0/download/foo.jpg"
    manager = WallpaperManager.getInstance self
    manager.setBitmap thumb
  end
end

Это выполняет выбор галереи в бесконечном цикле, что нежелательно. Однако, если я вставлю finish в конце onStart() функция, onActivityResult() кажется, не называется: обои не меняются на foo.jpg. Является onActivityResult() вызывается, когда галерея запускается во второй раз? Что здесь происходит?

3 ответа

Решение

Ввод finish в onActivityResult() работает.

Переместите следующий код в onCreate и это должно работать хорошо

Intent intent = Intent.new(Intent.ACTION_PICK)
intent.setType "image/*"
startActivityForResult Intent.createChooser(intent, "Select Picture"), 0

OnStart() вызывается снова, когда активность снова становится видимой, после завершения действия выбора, который снова запускает действие выбора и т. д.

Вы не должны помещать эту логику в onStart() вместо этого пользовательское событие запускает сборщик.

ИЛИ ЖЕ

Вы могли бы использовать boolean Отметить, чтобы отслеживать, если вы уже выбрали изображение.

Другие вопросы по тегам