1

奇妙な問題があります-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) を設定しようとしましたが、役に立ちません。

サムスンは同じコードに問題がないので、これは私には非常に奇妙に思えます。

解決策はありますか、それとも何か間違っているのでしょうか?

4

1 に答える 1