私は自分の問題の解決策を探しましたが、それを理解できないようです。おそらく 1 つまたは 2 つの単純な行であると確信しており、誰かが私を正しい方向に導くことができることを願っています。
私のアプリでは、ユーザーはボタンをクリックしてギャラリーを開くことができます。画像を選択すると、その画像がアプリ内の ImageView に表示されます。その部分は完全に正常に機能しています。もともと、ギャラリーから uri を返すだけで、次のように直接表示していました。
imageView1.setImageURI(myUri);
まあ、明らかに、ユーザーがそのページを数回続けてリロードすると、恐ろしい「メモリ不足」エラーが発生するので、コードをクリーンアップして画像を縮小する必要があります。これは、画像をビットマップに変換して縮小するビットマップ クラスを実装することで実現しました。さて、私の ImageView 表示コードは次のようになります。
imageView1.setImageBitmap(bitmap1);
その部分も正常に動作しています。ここに問題があります:
uri パスを文字列に変換し、それを SharedPreference に保存します。これは、ユーザーがアプリケーションを終了し、後で戻ってきたときに、設定した画像が自動的に表示されるようにするためです。uri を次のように変換します。
...
selectedImageUri = data.getData();
String selectedImagePath;
selectedImagePath = getPath(selectedImageUri);
...
SharedPreference 文字列を取得して uri に変換し、それを表示する古い方法は正常に機能していました。(もちろん、メモリ不足エラーを除いて)次のように見えました:
Uri myUri = Uri.parse(selectedImagePath);
imageView1 = setImageURI(myUri);
「selectedImagePath」は明らかに、SharedPreference から取得した文字列です。繰り返しますが、これは問題なく機能しましたが、何度もリロードするとエラーがスローされます。
現在動作していない部分は、ビットマップをスケーリングしてメモリエラーを発生させないように、新しいビットマップ変換を実装しようとしたときです。そのためのコードは次のとおりです。
Uri myUri = Uri.parse(selectedImagePath)
Bitmap bitmap = getThumbnail(myUri);
imageView1.setImageBitmap(bitmap);
これは何も表示しません。元の画像を選択すると画像は正常に表示されますが、この画面に戻って SharedPreference から文字列を解析し、ビットマップに変換しようとすると、何も表示されません。「getThumbnail」メソッドのコードは、この投稿から直接取得されました --->
3回目のアンサーダウンです。
誰にもアイデアはありますか?非常に長い投稿で申し訳ありませんが、十分な情報を提供しないよりも、問題を説明しすぎたほうがよいでしょう。これがどこかで答えられていたらごめんなさい。私は何時間も他の質問を探していましたが、私の問題を解決するものは何も見つかりませんでした.
ありがとう。