【问题标题】:What are "tag" and "id" on Layouts?什么是布局上的“标签”和“ID”?
【发布时间】:2012-03-18 08:45:39
【问题描述】:

我知道 switch 语句是如何工作的,但我不知道这意味着什么(R.id.webbutton)。谁能解释一下它是什么以及什么是 TAG? 有初学者的指南吗?我的意思是绝对的初学者。

【问题讨论】:

    标签: android android-layout android-logcat


    【解决方案1】:

    IDs and Tags

    ID

    视图可能有一个与之关联的整数 id。这些 id 是 通常在布局 XML 文件中分配,并用于查找 视图树中的特定视图。一个常见的模式是:

    在布局文件中定义一个 Button 并为其分配一个唯一的 ID。

    <Button
       android:id="@+id/my_button"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:text="@string/my_button_text"/>
    

    从Activity的onCreate方法中,找到Button

    Button myButton = (Button) findViewById(R.id.my_button);
    

    视图 ID 在整个树中不必是唯一的,但这很好 实践以确保它们至少在部分中是唯一的 您正在搜索的树。

    标签

    与 ID 不同,标签不用于标识视图。标签本质上是 可以与视图关联的额外信息。他们 最常用来方便存储与视图相关的数据 视图本身,而不是将它们放在一个单独的 结构。

    标签可以使用布局 XML 中的字符序列值指定为使用 android:tag 属性的单个标签或使用子元素的多个标签:

     <View ...
           android:tag="@string/mytag_value" />
     <View ...>
         <tag android:id="@+id/mytag"
              android:value="@string/mytag_value" />
     </View>
    

    也可以使用setTag(Object) 或setTag(int, Object) 从代码中的任意对象指定标签。

    【讨论】:

    • 感谢您的链接。它解释了我的大部分疑虑。
    • 如果我在我的布局中放置一个标签,就像上面标签部分中的这两个示例一样,我如何以编程方式获取信息?
    • 不确定 OP 询问的是什么“标签”,但这个答案对我有帮助。
    【解决方案2】:

    Id 是 xml 中您的 xml 组件的 id [可能是像 textview、edittext... 或像线性布局、相对布局... 或其他任何东西这样的视图组] 在 xml 中,您可以通过说

    (R.id."你在 xml 中的视图 id")

    但首先你应该使用 setContentView(R.layout."name of xml file in layout/res in your project") 您要使用的这个 xml 文件的组件。

    当我想在 logcat 中显示消息时,我使用它 [在 eclipse 中的工具,您可以在运行时查看应用程序消息],方法是说 String TAG= yourclassname.class.getsimpleName();

    并在 Log.d(TAG,"any string here"+我的班级中的一些变量我想知道它在应用程序运行时的特定时间的值);

    我希望我已经向你说清楚了。

    【讨论】:

    • 为什么一定要用TAG这个词?为什么不能用别的名字?
    • @Chaine 这只是一个约定
    【解决方案3】:

    以tutorials 开头。 (如果你是初学者,还没有搭建开发环境,那么就从Installing the SDK开始吧。)

    当您在 Android 中使用控制台日志工具时,日志记录方法的第一个参数是一个标签,可用于过滤 logcat 输出。典型的编程风格是:

    public class Something { 
        private static final String TAG = "Something";
    
        public void aMethod() {
            Log.i(TAG, "Entered aMethod");
        }
        . . .
    }
    

    这就是 TAG。

    本教程中解释了资源 ID。当您在 XML 中定义资源时,Android 会生成一个名为 R 的类,其中包含用于不同类型资源的嵌套类(R.id、R.string、R.layout 等)。这些嵌套类中的每一个对于该类型的每个资源都有一个常量。 R.id.webbutton 可能是从具有属性android:id="@+id/webbutton" 的按钮的布局文件生成的。这在教程中都有解释。

    【讨论】:

    • 我正在阅读教程,但我仍然觉得很难理解所有内容。我知道这些教程可能是最好的,但我认为我还需要几周时间来完成所有教程。非常感谢。
    • 可以通过 setTag 和 getTag 将标签应用于对象
    • @matthewlent - 是的,但这几乎肯定不同于在代码中遇到 OP 时混淆 OP 的 TAG(全部大写)。大量的 Android 示例代码在显示正在记录的任何内容时使用 TAG 字符串常量。
    • @TedHopp 我认为 OP 是在询问 view tags 不记录标签
    • @vlad - 如果是这样,TAG 在问题中就不会全部大写。全大写的TAG 通常出现在Android 示例代码以及Android Studio 的模板代码中,作为日志标记(如我在回答中所示)。此外,由于 OP 接受了 Weloo 的回答,这做出了与我相同的假设,很明显 OP 确实 not 意味着视图标签。
    猜你喜欢
    • 2017-05-05
    • 1970-01-01
    • 1970-01-01
    • 2012-02-08
    • 1970-01-01
    • 1970-01-01
    • 2017-04-06
    • 1970-01-01
    • 2019-10-14
    相关资源
    最近更新 更多