单击标签时如何显示标签的值?

时间:2020-01-03 08:10:31

标签: android kotlin

 <Button
android:id="@+id/On"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="92dp"
android:text="Prender"
app:layout_constraintStart_toStartOf="parent"
<tag android:id="@+id/on_tag" android:value="1" />


<Button
    android:id="@+id/Off"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginStart="8dp"
    android:tag="0"
    android:text="Apagar"
    app:layout_constraintEnd_toStartOf="@+id/On"
    app:layout_constraintStart_toStartOf="parent"
    tools:layout_editor_absoluteY="143dp"
    <tag android:id="@+id/on_tag2" android:value="0" />

单击标签时如何显示标签的值?我想创建onClick事件以查看值0或1“我想要一个INT值”而不是字符串

如果我使用的话也一样

android:id="@+id/Off"
android:value="1"

<tag android:id="@+id/On" android:value="1" />

这是我正在使用kotlin的.kt,需要显示代码的int值

class MainActivity : AppCompatActivity() {

    override fun onClick(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.this)

        On.setOnClickListener(View.OnClickListener { v ->
            Log.e(
                FragmentActivity.TAG,
                v.getTag(R.id.on_tag)?.toString()
            )
        })

        Off.setOnClickListener(View.OnClickListener { v ->
            Log.e(
                FragmentActivity.TAG,
                v.getTag(R.id.on_tag2)?.toString()
            )
        })


    }


}

1 个答案:

答案 0 :(得分:1)

onClick(View v)内,您可以按以下方式致电v.getTag()

 Button btnOn = (Button)findViewById(R.id.On);
 btnOn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Log.e(TAG,String.valueOf(v.getTag())); 
            }
        });

但是要使上述代码正常工作,您的xml应该如下所示。

<Button
    android:id="@+id/On"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginStart="8dp"
    android:layout_marginTop="92dp"
    android:text="Prender"
    android:tag="1"
    app:layout_constraintEnd_toStartOf="@+id/Off"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/textView"
/>

我做了一些研究和试验,根据问题和您的xml更新答案-并对其进行纠正

<Button
    android:id="@+id/On"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginStart="8dp"
    android:layout_marginTop="92dp"
    android:text="Prender"
    app:layout_constraintEnd_toStartOf="@+id/Off"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/textView"
<tag android:id="@+id/on_tag" android:value="1" />
</Button>

只需对getTag()进行微小的更改,而不是view.getTag()即可通过id,如下所示。

btnOn.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Log.e(TAG,String.valueOf(v.getTag(R.id.on_tag))); 
                }
            });

在更新的答案中,即标记为单独的标记,我们可以有多个标记值 分配给视图。抱歉,我忘记了标签,因为从未 经常使用,我通常将标签设置为仅在运行时查看。但是感谢你和 document

与下面相同的Kotlin代码

 On.setOnClickListener(View.OnClickListener { v ->
            Log.e(
                FragmentActivity.TAG,
                v.getTag(R.id.on_tag)?.toString()
            )
        })

我在on_tag中将id中的tag用于api.domain.com。另外,您还需要String,而getTag返回Object以便将其转换为字符串。