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

如何防止自定义视图在屏幕方向更改中丢失状态

如何防止自定义视图在屏幕方向更改中丢失状态

波斯汪 2019-07-03 11:21:27
我成功地实现了onRetainNonConfigurationInstance()为我的主要Activity若要保存和还原屏幕方向更改中的某些关键组件,请执行以下操作。但是,当方向改变时,我的自定义视图似乎是从头开始重新创建的。这是有意义的,尽管在我的例子中,这是不方便的,因为所讨论的自定义视图是X/Y图,所绘制的点存储在自定义视图中。是否有一种狡猾的方法来实现类似于onRetainNonConfigurationInstance()对于自定义视图,还是只需要在自定义视图中实现允许获取和设置其“状态”的方法?如何防止自定义视图在屏幕方向更改中丢失状态
查看完整描述

3 回答

?
HUX布斯

TA贡献1876条经验 获得超6个赞

我认为这是一个简单得多的版本。Bundle是实现Parcelable

public class CustomView extends View{
  private int stuff; // stuff

  @Override
  public Parcelable onSaveInstanceState()
  {
    Bundle bundle = new Bundle();
    bundle.putParcelable("superState", super.onSaveInstanceState());
    bundle.putInt("stuff", this.stuff); // ... save stuff 
    return bundle;
  }

  @Override
  public void onRestoreInstanceState(Parcelable state)
  {
    if (state instanceof Bundle) // implicit null check
    {
      Bundle bundle = (Bundle) state;
      this.stuff = bundle.getInt("stuff"); // ... load stuff
      state = bundle.getParcelable("superState");
    }
    super.onRestoreInstanceState(state);
  }}


查看完整回答
反对 回复 2019-07-03
  • 3 回答
  • 0 关注
  • 345 浏览

添加回答

举报

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