35

What is the meaning of this warning?

No label views point to this text field with an android:labelFor="@ id/@ id/editText1" attribute

Note that the double id (@id/@id) is a problem with the error message text and does not reflect the XML content (which is the correct syntax).

blahdiblah
  • 33,069
  • 21
  • 98
  • 152
user2447702
  • 359
  • 1
  • 3
  • 3

8 Answers8

20

The labelFor is an attribute for accessibility options. You assign this to a label so that if, on a form , user clicks a textedit field , android can know what to read (TalkBack) to user.

The id you assigned to it doesn't seem to be a valid one. why there are two @id in the id? Use ids like this: @id/editText1

Miro Markaravanes
  • 3,285
  • 25
  • 32
18

I've had the same warning message. It disappeared, when I added a hint to my EditText

android:hint="Some explanation about the input..."
user3596747
  • 209
  • 3
  • 5
13

Although I am not familiar with the exact error you have posted. But it definitely sounds like you have done something wrong with the id in the textView. Use id like following in your textView.

android:id="@+id/editText1"

And if you want to set labelFor then use :

   android:labelFor="@+id/editText1"
Mohamed Amine
  • 2,264
  • 1
  • 23
  • 36
stinepike
  • 54,068
  • 14
  • 92
  • 112
  • 1
    this error will show in the XML if you simply drag a "Multiline Text" into a layout. – Someone Somewhere Apr 27 '14 at 07:42
  • 5
    You should not have plus sign in the "labelFor" id. It should be: android:labelFor="@id/editText1" The plus sign is only used once to generate the id. – wholladay Oct 17 '14 at 14:48
  • @wholladay yes, but that wont be problem here. + will add id if not exist. still thx for the suggestion – stinepike Oct 18 '14 at 04:53
  • 2
    @wholladay It does matter if you try to reference an id before it is created. Either you add the +, either you re-organize your xml elements. – parvus Jan 17 '15 at 07:41
6

It means that you probably should define a label for this edit text and link them using a labelFor inside that labels definition.

example code:

<TextView
    android:id="@+id/my_textView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:labelFor="@+id/my_editText" <!--the plus sign goes first in the code-->
    android:text="I'm a label" />

<EditText
    android:id="@id/my_editText" <!--no plus sign if not the first-->
    android:layout_width="wrap_content"
    android:inputType="text"
    android:layout_height="wrap_content" />

and it's not only for text views.

YEH
  • 374
  • 4
  • 18
2

Remove th first '@id/' , use like

android:id="@+id/editText1"

which is the correct format. Keep going.. Best wishes.. :)

thampi joseph
  • 700
  • 1
  • 8
  • 20
2

I solved it by writing both attributes:

android:id="@+id/editText1" android:labelFor="@+id/editText1"

santaclos
  • 326
  • 3
  • 4
1

Select the editText, go to Properties, then Label for and enter @id/EditText1

Kristina
  • 11
  • 1
0

If the XML looks correct and you're in a Graphical Layout mode then it's probably using a later version of the Android rendering layout that doesn't support EditText.

In Eclipse and Android Studio there should be a green Android icon with what API version is rendering the layout. Make sure you're using a non W or Wearable API as Android W APIs don't support the EditText element. (EditText is most likely not supported because virtual keyboard space is limited on those devices).

The rendered preview should support EditText in any API 4.X version without a trailing W.

TALLBOY
  • 1,079
  • 1
  • 10
  • 13