XML でレイアウトを作成していますが、この非常に奇妙な現象に気付きました。以前はそんなことはなかったのですが、最近は神経質になっています。そのため、Eclipse を放棄して、より優れた IDE を見つけたいと思っています。
これが私のレイアウトです:
<?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:orientation="vertical" >
<EditText
android:id="@+id/action_search_bar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:hint="kkm" >
</EditText>
<ListView
android:id="@+id/actions_list"
android:layout_width="90dp"
android:layout_height="match_parent"
android:layout_above="@id/cancel_action_selection"
android:layout_below="@id/action_search_bar" >
</ListView>
<TextView
android:id="@+id/action_preview_pane"
android:layout_width="230dp"
android:layout_height="match_parent"
android:layout_alignBottom="@id/actions_list"
android:layout_alignTop="@id/actions_list"
android:layout_toRightOf="@id/actions_list"
android:gravity="center_vertical|center_horizontal"
android:text="kk" />
<Button
android:id="@+id/cancel_action_selection"
android:layout_width="wrap_content"
android:layout_height="48dp"
android:layout_alignParentBottom="true"
android:text="Cancel" />
<Button
android:id="@+id/define_new_action"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_toRightOf="@id/cancel_action_selection"
android:text="NEW" />
<Button
android:id="@+id/select_action"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_toRightOf="@id/define_new_action"
android:text="OK" />
</RelativeLayout>
これが私が達成しようとしているものです:
問題は、(android:layout_above を介して) ListView をキャンセル ボタンの上に設定しようとすると、キャンセル ボタンの ID が見つからないというメッセージが表示されることです。
ここで気付いたのは、レイアウトが @+id で作成される前にレイアウトの ID を指定しようとすると、その奇妙なエラーが発生することです。これが意味することは次のとおりです。
XML では、明らかに ID を順番に宣言する必要があります。変ですよね?ListView を定義してその layout_above 属性を設定する前に、キャンセル ボタンの ID を @+id で最初に宣言する必要があります。
ここで行ったことを実行しようとすると、キャンセル ボタンの ID が見つからないと表示されます。
プロジェクトのクリーニング、adb.exe の終了、更新などを試みましたが、プロジェクトがさらに破損するだけです。R はその後も生成されません。Eclipse はこのようなことを適切に処理できないため、問題が次々とループする必要はありません。
誰かがこれに対する解決策を持っていますか? それともより良いIDEですか?