48

The document says "@[+]id/myid" as the definition for android:id, from the notation it indicates that the plus is optional. But nowhere can I find a definition of what the plus sign means or not supplying it would mean.

What does it mean and why is it there?

Janusz
  • 187,060
  • 113
  • 301
  • 369
Bodger
  • 1,342
  • 4
  • 16
  • 23
  • Related post - [Difference between “@id/” and “@+id/” in Android](https://stackoverflow.com/q/5025910/465053) – RBT Aug 19 '18 at 08:52

2 Answers2

30

@+id/foo means you are creating an id named foo in the namespace of your application. You can refer to it using @id/foo. @android:id/foo means you are referring to an id defined in the android namespace. This namespace is the namespace of the framework. In this case, you need to use @android:id/list and @android:id/empty because these are the id the framework expects to find (the framework knows only about the ids in the android namespace.)

Taken from one of the "Android Developer | Google Groups" discussions.

Anthony Forloney
  • 90,123
  • 14
  • 117
  • 115
21

The documentation says,

The plus-symbol (+) means that this is a new resource name that must be created and added to our resources (in the R.java file). There are a number of other ID resources that are offered by the Android framework. When referencing an Android resource ID, you do not need the plus-symbol, but must add the android package namespace, like so:

android:id="@android:id/empty"
Vadim Kotov
  • 8,084
  • 8
  • 48
  • 62
John Lemp
  • 5,029
  • 3
  • 28
  • 36