我試圖在一個活動中保存我的視圖狀態,並使用一個Bundle將它傳遞給另一個活動。在第二個活動中,我嘗試使用該包來恢復視圖狀態。如何恢復Android視圖(UI)的狀態?
第一活動
private View CreateView() {
ScrollView scrollView = new ScrollView(this);
final LinearLayout layout = new LinearLayout(this);
layout.setOrientation(android.widget.LinearLayout.VERTICAL);
scrollView.addView(layout);
Button btn = new Button(this);
btn.setId(100);
btn.setText("Button Text");
btn.setOnClickListener(new ClickListener());
layout.addView(btn);
return scrollView;
}
的onCreate
super.onCreate(savedInstanceState);
View v = CreateView();
setContentView(v);
中保存狀態
SparseArray<Parcelable> array = new SparseArray<Parcelable>();
view.saveHierarchyState(array);
Bundle bundle = new Bundle();
bundle.putSparseParcelableArray("state", array);
Intent intent = new Intent(context, SecondActivity.class);
intent.putExtras(bundle);
startActivity(intent);
第二個活動的onCreate
bundle = this.getIntent().getExtras();
View view = new View(this);
view.restoreHierarchyState(bundle.getSparseParcelableArray("state"));
setContentView(view.getRootView());
Button btn = (Button)findViewById(100);
一切正常,沒有例外。但是,我面臨兩個問題: 1.第二項活動中的視圖爲空白。儘管我已恢復保存的狀態,但看不到任何東西 2.第二個活動中按鈕(帶有ID爲100)的實例始終爲空
在調試過程中,我可以看到包中有一個值編號100
任何幫助,我似乎做錯了將不勝感激。謝謝
這讓我覺得很奇怪,想要做。什麼是推理? – Dave
@Dave - 同意這是一件很奇怪的事情。遺憾的是我不能在這裏討論「爲什麼」的一部分!謝謝! –