我的自定义视图不保存其状态

时间:2011-06-09 11:57:55

标签: android

我有一个名为MyView的自定义视图,它从XML布局中扩展其内容。在XML中,我有一个ID为“text”的TextView。我的活动中有2个MyView。所以有2个ID为“text”的视图。这导致Android的onSaveInstanceState实现出现问题 - 只保存了一个TextView。怎么解决这个问题?

2 个答案:

答案 0 :(得分:0)

简单的答案是更改一个“文本”视图的ID。

答案 1 :(得分:0)

我有这个问题,我不喜欢改变ID的想法。经过大量的研究,我发现我的问题的解决方案覆盖onAttachedToWindow()并仅在其中更改对象值,而不是更改onRestoreInstanceState。我希望它有所帮助。

@Override
protected Parcelable onSaveInstanceState(){
    bundle = new Bundle();
    bundle.putParcelable("instanceState", super.onSaveInstanceState());
    bundle.putString("Text", txt_edit.getText().toString());
    return bundle;

}

@Override
protected void onRestoreInstanceState(Parcelable state) {
    if (state instanceof Bundle) {
          bundle = (Bundle) state;

          state = bundle.getParcelable("instanceState");
    }
    super.onRestoreInstanceState(state);
}

@Override
protected void onAttachedToWindow() {
    if (bundle != null){
        txt_edit.setText(bundle.getString("Text"));
    }

    super.onAttachedToWindow();
}