如何将完整的TextView对象传递给另一个活动(或保存并稍后重用)

时间:2018-08-19 09:00:17

标签: android android-activity

我正在开发一个Android应用程序,该应用程序用于在图像上添加文本并进行一些编辑。我有主图像编辑活动(mainEditActivity),在其中有我的图像,文本视图和编辑面板。我可以通过两种方式更改所选图像

  1. 从使用以下代码的图库中选择一个
pickGalleryBtn.setOnClickListener((View view) -> {
            Intent intent = new Intent();
            intent.setType("image/*");
            intent.setAction(Intent.ACTION_GET_CONTENT);
            startActivityForResult(Intent.createChooser(intent, "Select Picture"), PICK_IMAGE);
        });

以及活动结果

 @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (requestCode == PICK_IMAGE && null != data) {
            Uri selectedImageUri = data.getData();
            Intent intent = new Intent(mainEditActivity, ImageCropActivity.class);
            intent.putExtra("image.url", selectedImageUri.toString());
            mainEditActivity.startActivity(intent);
        } else {
            Toast.makeText(getContext(), "There was an error reading the file", Toast.LENGTH_LONG);
        }
    }

ImageCropActivity将在裁剪图像后启动MainEditActivity

  1. 用户还可以通过转到另一个页面来下载图像,该页面将再次通过ImageCropActivity并登陆MainEditActivity。

我的问题是,当用户通过上述任何一种方式更改图像时,随着MainEditActivity重新启动,在textview上设置的首选项(如文本大小,位置,颜色,字体..)会丢失。

有什么方法可以保存textView本身(而不仅仅是文本),以便用户不会丢失首选项。我已经尝试过,传递数据意图,共享偏好,savedinstancestate等,但是它们仅允许使用String或Serializable对象(TextView无法序列化)

1 个答案:

答案 0 :(得分:0)

感谢Manish

我意识到不需要传递/保存TextView对象。我可以将MainEditActivity视为所有其他活动的父活动,在其他所有活动中,控件都传递给其他活动,但不完全传递给其他活动。在我以前使用startActivity方法开始活动之前,这会导致丢失该活动中的所有数据。现在,我已经更改了使用startActivityForResult调用活动的方式,以便在MaindEditActivity中设置来自其他活动的必要数据。