我正在尝试改变方向。目前,当我旋转手机时,我的片段中的图像消失了。这显然是因为活动被摧毁并重新创建。我没有尝试像图像一样保存如此大的数据,而是决定通过将图像保存在该方法中来解决此问题:UrionSaveInstanceState@Override public void onSaveInstanceState(@NonNull Bundle outState) { super.onSaveInstanceState(outState); outState.putParcelable("imageUri", imageUri); }在我的片段中,我试图检索Uri并将其粘贴回,同时牢记空的可能性。onCreateViewImageView@Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_top_image, container, false); imageView = view.findViewById(R.id.meme_image_view); imageView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { selectedImage(v); } }); topTextView = view.findViewById(R.id.top_text_view); bottomTextView = view.findViewById(R.id.bottom_text_view); if(savedInstanceState != null){ if(imageUri != null){ Uri savedUri = savedInstanceState.getParcelable("imageUri"); imageView.setImageURI(savedUri); } } return view; }由于某种原因,它不起作用。当我旋转手机时,图像仍然丢失。
1 回答
宝慕林4294392
TA贡献2021条经验 获得超8个赞
取代:
outState.putString(String.valueOf(imageUri), "imageUri");
跟:
outState.putParcelable("imageUri", imageUri);
并替换:
String raw = savedInstanceState.getString("imageUri"); Uri savedUri = Uri.parse(raw);
跟:
Uri savedUri = savedInstanceState.getParcelable("imageUri");
上的方法采用密钥,后跟值。您有值,后跟键。而且,在 的情况下,您不需要将其转换为 和 从 转换为 。put...()
Bundle
Uri
String
添加回答
举报
0/150
提交
取消