4

Hey I am trying to make a notification for my file uploading notification. This is my XML: but it keeps giving me the error: Circular dependencies cannot exist in RelativeLayout. What am I doing wrong? I dont see anything wrong with it? I was also trying to make it look similar to the browser downloader

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"
    android:padding="5dp">

    <RelativeLayout 
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" 
        android:id="@+id/left"
        android:layout_toLeftOf="@+id/right">

        <ImageView 
            android:id="@+id/status_icon"
            android:layout_width="wrap_content" 
            android:layout_height="wrap_content" 
            android:layout_alignParentTop="true" 
        />

        <TextView 
            android:id="@+id/progress_text" 
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" 
            android:layout_below="@+id/status_icon"
            android:text="0%"
        />


    </RelativeLayout>

    <RelativeLayout 
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" 
        android:id="@+id/right"
        android:layout_toRightOf="@+id/left">

        <TextView 
            android:id="@+id/status_text" 
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" 
            android:layout_alignParentTop="true" 
        />

        <ProgressBar 
            android:id="@+id/status_progress"
            android:layout_width="fill_parent" 
            android:layout_height="wrap_content"
            android:layout_below="@id/status_text"
            android:progressDrawable="@android:drawable/progress_horizontal"
            android:indeterminate="false" 
            android:indeterminateOnly="false" 
        />
    </RelativeLayout>
</RelativeLayout>
ahodder
  • 11,353
  • 14
  • 71
  • 114
arberb
  • 960
  • 3
  • 14
  • 25

3 Answers3

9

RelativeLayout "left" is trying to lay itself out based on the location of RelativeLayout "right". This cannot be done, because as the exception says, it's circular. How can you park a car based on the parking of another car if that car is still moving?

Based on your xml file, I recommend you use LinearLayouts. There really isn't anything that you are doing here that can't be solved with two LL's and the parent RelativeLayout.

ahodder
  • 11,353
  • 14
  • 71
  • 114
3

Remove the line android:layout_toLeftOf="@+id/right". You are declaring left to be to the left of right, and then right to be to the right of left. Its a circular dependency because it does not know which element to lay out first.

onit
  • 6,306
  • 3
  • 24
  • 31
0

You try to refer two layouts each other in your layout. A part of codes shows as below,

<RelativeLayout
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <RelativeLayout
        android:id="@+id/left"
        android:layout_toLeftOf="@+id/right" />
    <RelativeLayout
        android:id="@+id/right"
        android:layout_toRightOf="@+id/left" />
 </RelativeLayout>

It will occur circular dependency exception.

How to fix?

Set gravity type of one layout, Other layout refers this.

For this case, remove android:layout_toRightOf="@+id/left"

Because default layout gravity is left, then remove this line. It will be fine.

Have fun @.@

Luna Kong
  • 3,065
  • 25
  • 20