2013-04-16 49 views
4

我正在接收FC的堆棧跟蹤,但我無法重現FC。我錯過了什麼?如何在RelativeLayout中找到導致循環依賴的內容

在java代碼中,根據應用程序的狀態,某些視圖設置爲View.GONEView.VISIBLE。在LayoutParams我只改變大小和邊距。

2個依次排列的RelativeLayouts是因爲活動有一個半透明的主題,第二個是可以由用戶應用的alphafilter。

任何幫助將是偉大的!

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/FNContainer" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:background="@color/clr_background" 
android:paddingTop="8dp" > 

<RelativeLayout 
    android:id="@+id/AlphaContainer" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" > 

    <xx.xxxxxx.guielements.Footer 
     android:id="@+id/footerInclude" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" /> 

    <xx.xxxxxx.guielements.RoseImageView 
     android:id="@+id/RoseView" 
     android:layout_width="fill_parent" 
     android:layout_height="200dp" 
     android:layout_above="@id/footerInclude" 
     android:layout_centerHorizontal="true" 
     android:layout_margin="5dp" /> 

    <TextView 
     android:id="@+id/tvBeschrijving" 
     android:layout_width="fill_parent" 
     android:layout_height="250dp" 
     android:layout_alignParentTop="true" 
     android:layout_alignParentLeft="true" 
     android:layout_marginLeft="8dp" /> 

    <xx.xxxxxx.guielements.HmpImageView 
     android:id="@+id/HmpView" 
     android:layout_width="200dp" 
     android:layout_height="200dp" 
     android:layout_alignParentLeft="true" 
     android:layout_below="@id/tvBeschrijving" 
     android:layout_marginLeft="8dp" /> 

    <TextView 
     android:id="@+id/tvDistToEnd" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_below="@id/HmpView" 
     android:text="TC Eind: 1253m" 
     android:textSize="20sp" 
     android:textStyle="bold" /> 

    <TextView 
     android:id="@+id/tvSnelheid" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentTop="true" 
     android:layout_alignParentRight="true" 
     android:gravity="top|right" 
     android:text="120" 
     android:textSize="70sp" 
     android:textStyle="bold" /> 

    <TextView 
     android:id="@+id/tvSnelheidAanduiding" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentRight="true" 
     android:layout_below="@id/tvSnelheid" 
     android:gravity="top|right" 
     android:text="km/u" 
     android:textSize="20sp" /> 

    <TextView 
     android:id="@+id/tvVavg" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentRight="true" 
     android:layout_below="@id/tvSnelheidAanduiding" 
     android:text="120" 
     android:textSize="70sp" 
     android:textStyle="bold" /> 
    <TextView 
     android:id="@+id/tvVavgAanduiding" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentRight="true" 
     android:layout_below="@id/tvVavg" 
     android:gravity="top|right" 
     android:text="Ø km/u" 
     android:textSize="20sp" /> 

    <TextView 
     android:id="@+id/tvVmaxOnderbord" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_above="@id/footerInclude" 
     android:layout_alignParentRight="true" 
     android:background="@drawable/onderbord" 
     android:gravity="center" 
     android:text="6-18h" 
     android:textSize="20sp" 
     android:textStyle="bold" 
     android:visibility="gone" /> 

    <TextView 
     android:id="@+id/tvVmax" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_above="@id/tvVmaxOnderbord" 
     android:layout_alignParentRight="true" 
     android:background="@drawable/bg_vmax" 
     android:gravity="center" 
     android:text="120" 
     android:textSize="20sp" 
     android:textStyle="bold" 
     android:visibility="gone" /> 



</RelativeLayout> 

java.lang.IllegalStateException: Circular dependencies cannot exist in RelativeLayout 
at android.widget.RelativeLayout$DependencyGraph.getSortedViews(RelativeLayout.java:1321) 
at android.widget.RelativeLayout.sortChildren(RelativeLayout.java:316) 
at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:337) 
at android.view.View.measure(View.java:15562) 
at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:617) 
at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:399) 
at android.view.View.measure(View.java:15562) 
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5109) 
at android.widget.FrameLayout.onMeasure(FrameLayout.java:310) 
at android.view.View.measure(View.java:15562) 
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5109) 
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1396) 
at android.widget.LinearLayout.measureVertical(LinearLayout.java:681) 
at android.widget.LinearLayout.onMeasure(LinearLayout.java:574) 
at android.view.View.measure(View.java:15562) 
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5109) 
at android.widget.FrameLayout.onMeasure(FrameLayout.java:310) 
at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2397) 
at android.view.View.measure(View.java:15562) 
at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:1987) 
at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1228) 
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1401) 
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1121) 
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:4598) 
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:725) 
at android.view.Choreographer.doCallbacks(Choreographer.java:555) 
at android.view.Choreographer.doFrame(Choreographer.java:525) 
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:711) 
at android.os.Handler.handleCallback(Handler.java:615) 
at android.os.Handler.dispatchMessage(Handler.java:92) 
at android.os.Looper.loop(Looper.java:137) 
at android.app.ActivityThread.main(ActivityThread.java:4921) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:511) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1038) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:805) 
at dalvik.system.NativeStart.main(Native Method) 
+0

你缺少堆棧跟蹤:) – Nanne

+0

stacktrace added ;-) –

回答

0

時設置視圖A至針對另一視圖乙對準,並且視圖乙針對A對齊一般它發生,這樣就使得一個循環依賴關係。

當你設置另一個視圖的ID時,它會發生在上面,下面的屬性和對齊。

+0

我讀過,但我找不到像xml中的任何關係。視圖之間的所有關係都是單向的。 –

2

我看了還以爲你的XML和它看起來並不像你有任何循環引用,如果你說你設置一些看法走後,我想看看android:layout_alignWithParentIfMissing="true"你可以找到一個例子here

我也想盡量不把你的任何視圖設置爲已經去掉,看看你是否仍然有問題。

+0

問題是我無法重現Force Close。 View.GONE可能是問題。我有A,B高於A和C高於B. B可以得到View.GONE,但是在我自己的設備上,我沒有得到FC –

+0

,所以我建議當您將視圖B設置爲alignWithParentIfMissing,然後如果B消失任何引用它的東西都會引用它的引用。 – Eluvatar

+0

來自用戶FC的堆棧跟蹤,通過自定義異常處理程序和開發人員控制檯中的一些崩潰報告。 –

相關問題