我有一個簡單的佈局,其中包含兩個片段。兩個片段中的一個會週期性地取代它,另一個片段在我使用它的整個時間內將保持一致。出於某種原因,刪除/添加它工作得很好,但替換它會導致其他片段消失。我從調試代碼知道,片段只是被分離,沒有明顯的原因。爲什麼會這樣呢?如果我使用後者,我必須非常小心地確保QuestionArea先走了......消失片段(Dettached without request)
這些代碼行來自FragmentActivity類。
fragManager.beginTransaction()
.replace(R.id.QuestionArea, getQuestionPostView(), "QuestionArea")
.commit();
fragManager.beginTransaction()
.remove(fragManager.findFragmentById(R.id.QuestionArea))
.add(R.id.QuestionArea, getQuestionPostView(), "QuestionArea")
.commit();
這是我希望的是其他相關代碼:
主顯示器的XML:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
android:orientation="vertical" >
<com.pearsonartphoto.FontFitTextView
android:id="@+id/Name"
style="@style/bigText"
android:background="@color/blue"
android:gravity="center"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"/>
<TextView android:id="@+id/Instructions"
style="@style/medText"
android:layout_width="fill_parent"
android:layout_below="@id/PowerName"
/>
<fragment
android:name="com.pearsonartphoto.NumberDisplay"
android:gravity="center"
android:id="@+id/QuestionArea"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@id/Instructions"/>
<fragment
android:name="com.pearsonartphoto.AbstractAnswerFragment"
android:id="@+id/AnswerArea"
style="@style/bigText"
android:gravity="center"
android:layout_below="@+id/QuestionArea"
android:layout_alignParentBottom="true"
android:layout_width="fill_parent"
android:layout_height="530sp"/>
</RelativeLayout>
FragmentActivity的一部分,該樹立AnswerArea
第一次(來自FragmentActivity)設置了QuestionArea。
fragManager.beginTransaction()
.replace(R.id.QuestionArea, getQuestionPreView(), "QuestionArea")
.commit();
功能getPostView()和getPreView()
@Override
Fragment getQuestionPreView() {
NumberDisplay display=(NumberDisplay)manager.findFragmentById(R.id.QuestionArea);
display.setNumber(-1);
return display;
}
@Override
Fragment getQuestionPostView() {
NumberDisplay display=(NumberDisplay)manager.findFragmentById(R.id.QuestionArea);
display.setNumber(answer);
return display;
}
這提供了我需要算出這個信息的關鍵位。謝謝!我打算爲未來的用戶發佈更詳細的版本,但是,如果沒有您的幫助,我不能拿出這個版本。 – PearsonArtPhoto
我剛剛給你一個讚美。這一舉克服了我一直面臨的很多問題。非常感謝! – PearsonArtPhoto