猿问

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

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

    }

由于某种原因,它不起作用。当我旋转手机时,图像仍然丢失。


HUH函数
浏览 123回答 1
1回答

宝慕林4294392

取代: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
随时随地看视频慕课网APP

相关分类

Java
我要回答