1

次のアプリケーションは期待どおりに機能します。

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の最後にを挿入すると、呼び出されないようです。壁紙はfoo.jpgに変更されません。ギャラリーが2回目に起動したときに呼び出されますか?何が起こっている?onStart()onActivityResult()onActivityResult()

4

3 に答える 3

2

次のコードをに移動するonCreateと、うまく機能するはずです

Intent intent = Intent.new(Intent.ACTION_PICK)
intent.setType "image/*"
startActivityForResult Intent.createChooser(intent, "Select Picture"), 0
于 2013-02-15T15:45:18.667 に答える
0

finish作品に入れるonActivityResult()

于 2013-02-15T15:55:38.333 に答える
0

OnStart()アクティビティが再び表示されるようになったとき、ピッカーアクティビティが終了した後、ピッカーアクティビティを再開した後など、再び呼び出されます。

そのロジックを入れてはいけませんonStart()。代わりに、ユーザーイベントにピッカーを起動させてください。

また

booleanすでに写真を選択している場合は、フラグを使用して追跡できます。

于 2013-02-15T16:04:41.830 に答える