Почему я получаю исключение CircularDependencyException? - PullRequest
4 голосов
/ 15 февраля 2012

Эй, я пытаюсь сделать уведомление для моего уведомления о загрузке файла. Это мой XML: но он продолжает давать мне ошибку: циклические зависимости не могут существовать в RelativeLayout. Что я делаю неправильно? Я не вижу ничего плохого в этом? Я также пытался сделать его похожим на браузер загрузчик

<?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>

Ответы [ 3 ]

9 голосов
/ 15 февраля 2012

RelativeLayout "left" пытается выложить себя в зависимости от местоположения RelativeLayout "right".Это не может быть сделано, потому что, как говорит исключение, оно круговое.Как вы можете припарковать автомобиль, основываясь на парковке другого автомобиля, если этот автомобиль все еще движется?

На основании вашего XML-файла я рекомендую использовать LinearLayout s.Здесь действительно нет ничего, что вы делаете здесь, что не может быть решено двумя LL и родительским RelativeLayout.

3 голосов
/ 15 февраля 2012

Удалить строку android: layout_toLeftOf = "@ + id / right".Вы объявляете слева быть слева направо, а затем справа налево.Это круговая зависимость, потому что он не знает, какой элемент выложить первым.

0 голосов
/ 24 июля 2015

Вы пытаетесь связать два макета друг с другом в вашем макете.Часть кодов показывает, как показано ниже:

<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>

Произойдет круговое исключение зависимости.

Как исправить?

Установить тип гравитацииодин макет, другой макет ссылается на это.

Для этого случая удалите android: layout_toRightOf = "@ + id / left"

Поскольку гравитация макета по умолчанию оставлена, тоудалить эту строку.Все будет хорошо.

Веселись @. @

...