java - click方法中的动态按钮和getTag

标签 java android

我正在尝试创建动态按钮并在其中添加点击功能。我尝试在按钮数组的元素中使用 getTag 方法。每当我尝试运行这些代码时,应用程序崩溃时我都会尝试,即 v.getTag() 和 button.getTag()。谢谢你帮助我。

public class MainActivity extends AppCompatActivity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.testing);
        //test creating of dynamic buttons
         Button[] myButton = new Button[4];
        LinearLayout scrViewButLay = (LinearLayout) findViewById(R.id.layout);
        for (int index = 0; index < 4; index++) {
            myButton[index] = new Button(this); //initialize the button here
            myButton[index].setText("Button # ");
            myButton[index].setTag(index);
            scrViewButLay.addView(myButton[index]);
          myButton[index].setOnClickListener(getOnClickDoSomething(myButton[index]));
        }
    }


  View.OnClickListener getOnClickDoSomething(final Button button)  {
        return new View.OnClickListener() {
            public void onClick(View v) {
                button.setText("text now set.. ");
                //Log.i("info",(String) button.getTag());
                Log.i("info",(String) v.getTag());
            }

        }; 
   }
}

LogCat 错误-------------------------------------------------------- ----------------------

com.example.mandeep.pos1_1, PID: 26112
                                                                            java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String
                                                                                at com.example.mandeep.pos1_1.MainActivity$1.onClick(MainActivity.java:43)
                                                                                at android.view.View.performClick(View.java:4757)
                                                                                at android.view.View$PerformClick.run(View.java:19757)
                                                                                at android.os.Handler.handleCallback(Handler.java:739)
                                                                                at android.os.Handler.dispatchMessage(Handler.java:95)
                                                                                at android.os.Looper.loop(Looper.java:135)
                                                                                at android.app.ActivityThread.main(ActivityThread.java:5219)
                                                                                at java.lang.reflect.Method.invoke(Native Method)
                                                                                at java.lang.reflect.Method.invoke(Method.java:372)
                                                                                at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:898)
                                                                                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:693)

最佳答案

尝试使用这个:

Log.i("info", ""+v.getTag());  

或者如果你想将其解析为 int。

final int tag = Integer.parseInt(""+v.getTag());

关于java - click方法中的动态按钮和getTag,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44748590/

相关文章:

java - jms 错误处理程序 : receive a callback only when jms gives up

java - 具有动态构造函数值的spring bean

java - liferay 自定义 portlet 中的最大 language.properties 文件大小

java - 最小化多线程环境中的 SecureRandom 性能问题?

android - 如何使用子域的通配符构建多源可信 Web Activity

android - 我们如何在所有设备上测试 Android 应用程序?

java - OPenMS TOPPAS 找不到 Java

android - 此堆栈跟踪是什么意思?按登录按钮时应用程序崩溃

android - 在 Android Fragment 上发布静态引用

java - Android 中谷歌分析事件跟踪器的简单示例