兩個視圖恢復片段我有一個複雜的佈局來實現。 它有19個部分可以顯示或不基於用戶以前輸入的大量參數。 爲了簡化代碼並且不顯示未使用的部分,佈局是動態創建的。與具有相同ID
一切都是片段內。 片段有一個用作容器的LinearLayout,當創建片段時,我生成所有必需的片段。
每個部分由自己的本地適配器,它負責誇大這一部分的佈局,並把它添加到容器管理。
一切工作完全正常。問題是2個部分具有完全相同的結構,因此他們共享相同的xml佈局。因爲這兩個部分的內部視圖具有相同的ID。這不是問題,因爲該部分是在其適配器本地管理的。 當我進入下一個片段然後回到這個片段時,會出現問題。系統試圖恢復視圖的以前的狀態,並且由於這兩個部分具有相同的ID,所以當第二部分被恢復時,其值也被設置爲第一部分。
是否有來管理或告訴片段無法恢復的狀態(如一切手工重新載入反正)的任何解決方案。
這裏是當前結構的光例如:
片段XML
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
部XML
<EditText xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/section_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
片段代碼
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_layout, container, false);
if (<condition>)
createSection1(getContext(),view);
if (<condition>)
createSection2(getContext(),view);
return view;
}
private void createSection1(Context context, ViewGroup root){
Section1Adapter adapter = new Section1Adapter(context, root);
// ...
}
private void createSection2(Context context, ViewGroup root){
Section2Adapter adapter = new Section2Adapter(context, root);
// ...
}
適配器代碼(兩個同樣的想法)
public Section2Adapter(LayoutInflater inflater, ViewGroup root) {
View view = LayoutInflater.from(context).inflate(R.layout.section_layout, root, false);
initView(view);
root.addView(view);
}
Wahoo!令人驚歎的答案! Thx非常,因爲我不知道這一點。這正是我所期待的。 – Eselfar