我有一個ListFragment,我使用自定義適配器來填充列表視圖。一切都很好,直到我改變方向和滾動。然後它看起來像這樣: 在方向變化的列表片段中重複列表視圖行
我猜測它與我查看與視圖持有人摸索,但我現在無法訪問代碼。
我有一個ListFragment,我使用自定義適配器來填充列表視圖。一切都很好,直到我改變方向和滾動。然後它看起來像這樣: 在方向變化的列表片段中重複列表視圖行
我猜測它與我查看與視圖持有人摸索,但我現在無法訪問代碼。
的原因重疊片段的活性部分是我使用的FrameLayout並使用FragmentTransition.add(...)添加片段。當我將.add()更改爲.replace()時,刪除了舊片段,並添加了新片段,解決了我的問題。
改變方向導致的onCreate重新啓動,除非你有這種方法
public void onConfigurationChanged(Configuration newConfig)
{
super.onConfigurationChanged(newConfig);
}
,並把這個在你的清單
android:configChanges="orientation"
是的,但是問題是爲什麼它重疊舊的佈局。答案在於重複的問題。無論如何感謝提示! – Qw4z1
我有類似的問題,並根據我說的解決方案: - 你會得到這個模糊,因爲每次方向改變某處某處創建了一個新的listfragment實例(可能是oncreate()),所以你只需要創建一個列表片段的實例,並在方向更改時替換該片段而不是再次添加。
檢查這是第一次調用onCreate(),換句話說,確定回調是否不是由於屏幕旋轉。
protected void onCreate(Bundle savedInstanceState) {
if(savedInstanceState == null) {
// transition.add(Your fragment,...)
}
}
我有同樣的問題,其原因的FrameLayout用法, 首先,你必須檢查你的片段已經加入到活動:
String TagName = "F";
添加一個碎片,無UI如果您想稍後從活動中獲取片段,則需要使用findFragmentByTag()。 「谷歌」 http://developer.android.com/guide/components/fragments.html#Adding
Fragement F = getFragmentManager().findFragmentByTag(TagName);
然後檢查
if(F == null) {
F = new F();
getFragmentManager()
.beginTransaction()
.add(R.id.container, F, TagName)
.commit();
}
這裏的目標是使用時要避免添加或創建的片段,配置變化,這會導致該問題過程中仍然存在的新實例FrameLayout作爲容器。
解決方案2(簡單): 您唯一需要做的就是將您的容器更改爲ex:LinearLayout,就是這樣。但在我看來,這不是最好的解決方案,因爲片段的多個實例。
希望得到這個幫助;
可能重複[Android ListFragment列表視圖重疊的方向更改](http://stackoverflow.com/questions/11209412/android-listfragment-list-view-overlapping-on-orientation-change) – Qw4z1