我正在开发一个Android应用程序,该应用程序用于在图像上添加文本并进行一些编辑。我有主图像编辑活动(mainEditActivity),在其中有我的图像,文本视图和编辑面板。我可以通过两种方式更改所选图像
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
我的问题是,当用户通过上述任何一种方式更改图像时,随着MainEditActivity重新启动,在textview上设置的首选项(如文本大小,位置,颜色,字体..)会丢失。
有什么方法可以保存textView本身(而不仅仅是文本),以便用户不会丢失首选项。我已经尝试过,传递数据意图,共享偏好,savedinstancestate等,但是它们仅允许使用String或Serializable对象(TextView无法序列化)
答案 0 :(得分:0)
感谢Manish
我意识到不需要传递/保存TextView对象。我可以将MainEditActivity视为所有其他活动的父活动,在其他所有活动中,控件都传递给其他活动,但不完全传递给其他活动。在我以前使用startActivity
方法开始活动之前,这会导致丢失该活动中的所有数据。现在,我已经更改了使用startActivityForResult
调用活动的方式,以便在MaindEditActivity中设置来自其他活动的必要数据。