0

アプリにローダーマネージャーを使用しています。向きを変更すると、アプリは 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);
}
4

0 に答える 0