如何在 popBackStack() 之后显示用 Picasso 加载的图像
How to show image loaded with Picasso after popBackStack()
我有第一个片段,它有一个用 Picasso 以这种方式加载的 imageView:
ExifInterface exif = null;
float rotate = 0;
try
{
exif = new ExifInterface(absolutePath);
} catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
int orientation = exif.getAttributeInt(ExifInterface.TAG_ORIENTATION,
ExifInterface.ORIENTATION_UNDEFINED);
switch (orientation) {
case ExifInterface.ORIENTATION_NORMAL:
rotate = 0;
break;
case ExifInterface.ORIENTATION_ROTATE_270:
rotate = 270;
break;
case ExifInterface.ORIENTATION_ROTATE_180:
rotate = 180;
break;
case ExifInterface.ORIENTATION_ROTATE_90:
rotate = 90;
break;
}
Picasso.with(getActivity())
.load(mMediaUri)
.resize(1280, 1280)
.rotate(rotate)
.centerCrop()
.transform(new RoundedTransformation())
.into(photo);
当我按下 next
按钮时,我会执行此操作并转到第二个片段:
Bundle bundle = new Bundle();
bundle.putLong("primaryKey", primaryKey);
bundle.putString("uri", String.valueOf(mMediaUri));
bundle.putString("registration", registrationET.getText().toString().trim());
bundle.putString("makemodel", makemodelET.getText().toString().trim());
bundle.putString("manifacturer", manifacturerET.getText().toString().trim());
bundle.putString("category", categoryET.getText().toString().trim());
bundle.putString("class", classET.getText().toString().trim());
Fragment fragment = new AddAircraftSecondPartFragment();
fragment.setArguments(bundle);
FragmentManager manager = getActivity().getSupportFragmentManager();
manager.beginTransaction().replace(R.id.content_main, fragment).addToBackStack(null).commit();
当我想按回键或单击 Back
按钮时会出现此问题:EditText
或 TextView
上的值是正确的,因为我使用了这个:
android:freezesText="true"
但我没有在 ImageView 中看到用 Picasso 加载的以前的图像。
这是我用来 popBackStack()
:
的代码
private void pressBackButton()
{
FragmentManager manager = getActivity().getSupportFragmentManager();
manager.popBackStack();
}
所以我的问题是:
- 如何解决 ImageView 的问题?
- 在
popBackStack()
之后的上一个片段中调用的方法是什么?
感谢您的回答
1) 您可以将图像加载移动到片段的重写 onResume() 方法。
2) onResume() 在片段为"resumed"
时被调用
我有第一个片段,它有一个用 Picasso 以这种方式加载的 imageView:
ExifInterface exif = null;
float rotate = 0;
try
{
exif = new ExifInterface(absolutePath);
} catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
int orientation = exif.getAttributeInt(ExifInterface.TAG_ORIENTATION,
ExifInterface.ORIENTATION_UNDEFINED);
switch (orientation) {
case ExifInterface.ORIENTATION_NORMAL:
rotate = 0;
break;
case ExifInterface.ORIENTATION_ROTATE_270:
rotate = 270;
break;
case ExifInterface.ORIENTATION_ROTATE_180:
rotate = 180;
break;
case ExifInterface.ORIENTATION_ROTATE_90:
rotate = 90;
break;
}
Picasso.with(getActivity())
.load(mMediaUri)
.resize(1280, 1280)
.rotate(rotate)
.centerCrop()
.transform(new RoundedTransformation())
.into(photo);
当我按下 next
按钮时,我会执行此操作并转到第二个片段:
Bundle bundle = new Bundle();
bundle.putLong("primaryKey", primaryKey);
bundle.putString("uri", String.valueOf(mMediaUri));
bundle.putString("registration", registrationET.getText().toString().trim());
bundle.putString("makemodel", makemodelET.getText().toString().trim());
bundle.putString("manifacturer", manifacturerET.getText().toString().trim());
bundle.putString("category", categoryET.getText().toString().trim());
bundle.putString("class", classET.getText().toString().trim());
Fragment fragment = new AddAircraftSecondPartFragment();
fragment.setArguments(bundle);
FragmentManager manager = getActivity().getSupportFragmentManager();
manager.beginTransaction().replace(R.id.content_main, fragment).addToBackStack(null).commit();
当我想按回键或单击 Back
按钮时会出现此问题:EditText
或 TextView
上的值是正确的,因为我使用了这个:
android:freezesText="true"
但我没有在 ImageView 中看到用 Picasso 加载的以前的图像。
这是我用来 popBackStack()
:
private void pressBackButton()
{
FragmentManager manager = getActivity().getSupportFragmentManager();
manager.popBackStack();
}
所以我的问题是:
- 如何解决 ImageView 的问题?
- 在
popBackStack()
之后的上一个片段中调用的方法是什么?
感谢您的回答
1) 您可以将图像加载移动到片段的重写 onResume() 方法。
2) onResume() 在片段为"resumed"
时被调用