当我开始开发Android应用程序时,我倾向于在任何需要的地方定义自定义R值,特别是在布局文件中。例如:
findViewById(R.id.customerName).setText(customer.getName())
布局:
<TextView android:text="TextView" android:id="@id/customerName"
android:layout_height="wrap_content" android:layout_width="fill_parent" />
现在我意识到,使用android.R
可能会更好。
findViewById(android.R.id.text1).setText(customer.getName())
布局:
<TextView android:text="TextView" android:id="@android:id/text1"
android:layout_height="wrap_content" android:layout_width="fill_parent" />
您遵循什么做法?每种方法的优点和缺点是什么?
答案 0 :(得分:17)
android.R
用于利用操作系统内置的资源。
您可以使用android.R
如果您引用自己创建的资源,大多数总是使用R.
,在大多数情况下,我建议您尝试远离内置资源,因为它们会将版本更改为版本
答案 1 :(得分:1)
自定义。系统提供的ID存在在代码中引用项目中不存在的资源的风险。如果有相应的资源,可以使用海关ID - 可绘制的,视图,布局或者你有什么。
答案 2 :(得分:-1)
您需要自己的R.java类,因为它包含对所有资源(布局,图像,字符串等)的引用。
如果要获取对id为“myView”的视图的引用,则可以使用R.id.myView。 如果您想获得对内置Android资源的引用,可以使用android.R.id.text
请看下面的页面:
http://developer.android.com/guide/topics/resources/accessing-resources.html
答案 3 :(得分:-1)
框架id vs 布局中的自定义ID没有大的优势或劣势。
使用框架标识符的优点:
ListActivity
使用框架标识符的缺点:
在两种做法中
我认为SDK中的示例会帮助我做出决定,并且(猜猜是什么?)它没有。 Notepad和LunarLander应用程序使用android.R.id
作为视图标识符,而ApiDemos项目使用自定义标识符。
GestureBuilder的最佳实践混合了两种方法? (@+id/addButton
和@android:id/empty
)
IHMO,对于定义@+id/text
@+id/Button01
的HelloActivity和JetBoy的更糟糕的做法......这不是描述性的,可能被(@andoid:id/button1
或@+id/startButton
取代)