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