猿问

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

我成功地实现了onRetainNonConfigurationInstance()为我的主要Activity若要保存和还原屏幕方向更改中的某些关键组件,请执行以下操作。

但是,当方向改变时,我的自定义视图似乎是从头开始重新创建的。这是有意义的,尽管在我的例子中,这是不方便的,因为所讨论的自定义视图是X/Y图,所绘制的点存储在自定义视图中。

是否有一种狡猾的方法来实现类似于onRetainNonConfigurationInstance()对于自定义视图,还是只需要在自定义视图中实现允许获取和设置其“状态”的方法?

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

波斯汪
浏览 346回答 3
3回答

HUX布斯

我认为这是一个简单得多的版本。Bundle是实现Parcelablepublic 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);   }}
随时随地看视频慕课网APP

相关分类

Android
我要回答