2011-06-23 17 views
0

私はカメラで画像を撮ることができるアクティビティを持っており、このイメージをインテントエクストラとして親アクティビティに送信したいと考えています。しかし、私が実際に意図にイメージを追加しようとすると、突然finish()コールが何もしていないように見えて、私の活動は決して閉じられません。Android:特定のインテントエクストラはアクティビティの終了を防ぐ

ここに私のコードの一部です:

public void onPictureTaken(byte[] imageData, Camera c) 
    { 
     if (imageData != null) { 
      // Send the result as a byte array 
      Intent intent = new Intent(); 
      intent.putExtra("imagedata", imageData); 
      setResult(RESULT_OK, intent); 
      finish(); 
     } 
    } 

奇妙なことは、私はputExtra()呼び出しをコメントアウトした場合、それはすべて(もちろん、画像なし)が正しく動作し、私の活動が終了し、私がヒット、です親のonActivityResult()コールバック。しかし、私が行を残すと、アクティビティは決して閉じず、コールバックは決して起動しません。

私は、ストリングのようなエクストラにもっと些細なことを入れようとしましたが、すべてが完璧に機能しています。 putExtra()はバイト配列を取ることが許されており、私はそれをBitmapとしてラップして送信しようとしましたが、それも送信されませんでした。私が考え得る唯一のことは、大きなものをIntentに渡すべきではないということです。その場合、代わりにファイルに書き込んでみてください。ファイルへの書き込みはバイト配列参照を渡すよりも遅くする必要があります。これが私がこのようにしている理由です。

アイデア?事前に感謝:)

電話:サムスンギャラクシーS APIレベル:7

答えて

2

あなたはテントエクストラ以内に画像データを含むべきではありません。説明のためにthis threadを参照してください。簡単に言えば、Intentのエクストラはできるだけ小さくしておいてください。

あなたの写真をSDカードに保存し、そのファイルをあなたのIntentのパスに渡すことをお勧めします。

+0

ありがとう、私はそのスレッドを2時間前に見つけた(Android開発の新機能)ことを願っています。画像をファイルに書き込んだ後、まっすぐに読み直すのはちょっとばかげているようです。アプリライフサイクルのために画像を保存したいだけなので、それを保持するためにシングルトンを使うべきでしょうか?とにかく、迅速な応答のおかげで:) – Adam

0

)は、このコード

public void quit() { 
     int pid = android.os.Process.myPid(); 
     android.os.Process.killProcess(pid); 
     System.exit(0); 
    } 

を試してみて、(終了使用してそれを呼び出します。

関連する問題