Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用OnClickListener获取getTag()值_Java_Android_Onclick_Tags_Onclicklistener - Fatal编程技术网

Java 如何使用OnClickListener获取getTag()值

Java 如何使用OnClickListener获取getTag()值,java,android,onclick,tags,onclicklistener,Java,Android,Onclick,Tags,Onclicklistener,如果我使用OnClick方法,系统可以从每个textView读取标记,但是如果我更改为textView.SetOnClickListener,系统将仅读取标记为0的textView。当我尝试单击其他文本视图时,系统无法读取自己的标记。我哪里做错了??我该怎么办 package com.example.brainapp; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import andro

如果我使用OnClick方法,系统可以从每个textView读取标记,但是如果我更改为textView.SetOnClickListener,系统将仅读取标记为0的textView。当我尝试单击其他文本视图时,系统无法读取自己的标记。我哪里做错了??我该怎么办

package com.example.brainapp;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.GridLayout;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

    GridLayout gridLayout;
    TextView textView;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        gridLayout = (GridLayout) findViewById(R.id.gridLayout);
        textView =  (TextView) findViewById(R.id.textView);

      textView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                Log.i("Tag : ", v.getTag().toString());

            }
        });


    }
}
这是我的xml


您可以使用同一个onClickListener并从多个视图中检索标记:

  TextView a = findViewById(R.id.A);
  TextView b = findViewById(R.id.B);

  View.OnClickListener clickListener = new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String string = (String)v.getTag();
                Log.d("debug", string);
            }
        };
  a.setOnClickListener(clickListener);
  b.setOnClickListener(clickListener);

因此,您不需要编写多个onClickListener来完成相同的任务。

您可以使用同一个onClickListener并从多个视图中检索标记:

  TextView a = findViewById(R.id.A);
  TextView b = findViewById(R.id.B);

  View.OnClickListener clickListener = new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String string = (String)v.getTag();
                Log.d("debug", string);
            }
        };
  a.setOnClickListener(clickListener);
  b.setOnClickListener(clickListener);

因此,您不需要编写多个onClickListener来执行相同的操作。

为什么要使用具有相同id的多个textview?噢,那么id需要不同??我只是想看看如果ID都是一样的话会发生什么。如果我们有不同的ID。。。这意味着我需要写4次onClickListener??对于每个标记???。是的,如果所有textview执行相同的操作,则可以创建一个方法,然后只需在所有4个onClickListener中调用该方法。是的,它必须对不同的ID和onClickListener写入4次。最好坚持使用Onclick(),以减少编码并达到预期效果。为什么使用具有相同id的多个textview?哦,所以id需要不同??我只是想看看如果ID都是一样的话会发生什么。如果我们有不同的ID。。。这意味着我需要写4次onClickListener??对于每个标记???。是的,如果所有textview执行相同的操作,则可以创建一个方法,然后只需在所有4个onClickListener中调用该方法。是的,它必须对不同的ID和onClickListener写入4次。最好坚持使用Onclick(),以减少编码并实现预期效果。