我有看法是這樣的: Android的方向保存佈局子狀態
這是一個機器人模塊。當我在另一個佈局上使用它時:
<com.example.myapp.MyModuleView
android:id="+id/test" ...
當我得到引用時,我可以調用MyModuleView類的方法。
MyModuleView v = (MyModuleView)findViewById(R.id.test)
當我創建MySeekBarLayout:
MySeekBarLayout l = new MySeekBarLayout();
l.setProgress(10)
這種佈局是:
MySeekBarLayout擴展的LinearLayout
當我加入這個觀點mymoduleview:
v.getLayout().addView(l.getLayout())
所以佈局被添加到父佈局。 它的工作很好。
但是,當我旋轉我的手機,比MyModuleView的onSaveInstanceState
和onRestoreInstanceState
runned。但附加的佈局不需要撥打電話onRestoreInstanceState
。我怎樣才能保存附加視圖的狀態? 謝謝!
public class MySeekBarView<T> extends TableRow {
private SeekBar seekBar;
private TextView seekBarValue;
public MySeekBarView(Context context, String title) {
super(context);
inflate(getContext(), R.layout.layout_seekbar, this);
}
@Override
protected void onViewCreated() {
seekBar = findViewById(R.id.my_seekbar_input);
seekBarValue = findViewById(R.id.my_seekbar_value);
seekBarValue.setText(String.valueOf(seekBar.getProgress()));
}
}
MyModuleView附上孩子:
view
是MySeekBarView istance!
TableRow tr = new TableRow(getContext());
TextView textView = (TextView) factory.inflate(R.layout.textview_layout, null);
textView.setText("Test:");
tr.addView(textView);
tr.addView(view, new TableRow.LayoutParams(0, TableRow.LayoutParams.WRAP_CONTENT, 1f));
tr.setGravity(Gravity.CENTER_VERTICAL);
table.addView(tr);
您是否已爲[MyModuleView]執行[BaseSavedState](https://stackoverflow.com/a/3542895/1083957)? – azizbekian
不,我沒有。但意見不分離。它被重新創建。我需要保存實例。刪除所有視圖,並重新附加? – ketom
你可以發佈你的onRestoreInstanceState代碼嗎? –