为了账号安全,请及时绑定邮箱和手机立即绑定

如何通过 onSaveInstanceState 保存和检索图像的 URI?

如何通过 onSaveInstanceState 保存和检索图像的 URI?

HUH函数 2022-08-03 10:17:12
我正在尝试改变方向。目前,当我旋转手机时,我的片段中的图像消失了。这显然是因为活动被摧毁并重新创建。我没有尝试像图像一样保存如此大的数据,而是决定通过将图像保存在该方法中来解决此问题: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...()BundleUriString


查看完整回答
反对 回复 2022-08-03
  • 1 回答
  • 0 关注
  • 97 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信