アプリにローダーマネージャーを使用しています。向きを変更すると、アプリは TextView をリロードできますが、ドローアブルのイメージストリームは 2 回目にロードされません。最初のロードでは画像が表示されますが、向きを変更した後は変更されていない状態のままです。(私の場合、白い四角)
@Override
public void onLoadFinished(Loader<Person> loader, Person p) {
tvProfileName.setText(p.getName());
Log.i("img stream", ""+p.getImageStream());
Bitmap b = BitmapFactory.decodeStream(p.getImageStream());
Drawable d = new BitmapDrawable(getResources(), b);
ivMenuPhoto.setImageDrawable(d);
}
向きを変更した後でも、setText が機能し、私の名前が読み込まれます。しかし、setimagedrawable が機能していません。p.getImageStream は null ではありません...
レイアウトの変更が完了する前に、ドローアブルが設定されている可能性がありますか? TextView が機能しているため、非常に混乱しています。
私のソリューション用に編集:
Person オブジェクトに Drawable 属性を追加しました。したがって、ローダーもその部分を保持できます。次に、ゲッターとセッターを作成しました。そして、onResume を追加して、向きの変更後にドローアブルも設定しました
@Override
public void onLoadFinished(Loader<Person> loader, Person p) {
tvProfileName.setText(p.getName());
Drawable d = new BitmapDrawable(getResources(), p.getPersonphoto());
this.personPhoto = d;
ivMenuPhoto.setImageDrawable(d);
}
@Override
protected void onResume() {
super.onResume();
ivMenuPhoto.setImageDrawable(this.personPhoto);
}