奇妙な問題があります-xperia(android 4.0.3)では発生しますが、samsung S plus(2.3.6)では発生しません。アプリケーションでは、サポート ライブラリを使用して Google マップ APIv2 を使用しています (別のアクティビティで。問題があるかどうかはわかりません)。
問題を次のように絞り込んだと思います。
private Bitmap bitmap;
private String st;
private static final String PHOTO_DIR = "photodir";
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
[...]
st = Environment.getExternalStorageDirectory().toString() + "/" + PHOTO_DIR + "/test.jpg";
bitmap = BitmapFactory.decodeFile(st);
ImageView im = (ImageView) findViewById(R.id.imv_Photo);
im.setImageBitmap(bitmap);
[...]
これは期待どおりに機能します。でもこれは:
@Override
public void onClick(View v)
{
try
{
ImageView im = (ImageView) findViewById(R.id.imv_Photo);
String st = Environment.getExternalStorageDirectory().toString() + "/" + PHOTO_DIR + "/test1.jpg";
Bitmap bitmap = BitmapFactory.decodeFile(st);
im.setImageBitmap(bitmap);
}
catch (Exception e)
{
// null
}
}
im.setImageBitmap(bitmap) を削除しても、(try/catch ブロックにもかかわらず!) アプリケーションがハングします。BitmapFactory.decodeFile をコメントアウトすると、問題が消えます。さらに悪いことに、xperia は USB に差し込むと SD カードをアンマウントし、電話のメモリに写真を書き込む方法がまだわからないため、ログを確認できません (ちなみに、後でログを取得する方法はありますか?)
onCreate() からコードを削除すると、onClick() は 1 回だけ機能します。デコードする前に bitmap = null と setImageBitmap(null) を設定しようとしましたが、役に立ちません。
サムスンは同じコードに問題がないので、これは私には非常に奇妙に思えます。
解決策はありますか、それとも何か間違っているのでしょうか?