如何在android中找到单击的动态按钮

时间:2017-01-16 14:22:42

标签: android button

我在按钮点击的活动中创建了动态按钮。当我在活动中创建多个按钮时,onclick适用于最近的按钮,因为我为每个按钮分配了id。除了最近的按钮之外,我如何识别按下哪个动态按钮。 这是我的代码片段

public void dynamicButton()
    {
       // int x=0;
        preferences = PreferenceManager.getDefaultSharedPreferences(TimeStudy.this);
        value = preferences.getInt("value", 0);
        //myButton = new Button(this);



          //  if (value > x)
        if ( i <= value) {
               myButton= new Button(this);
               myButton.setId(value);
               BtnId.add(value);
               myButton.setTag(value);

                LinearLayout ll = (LinearLayout) findViewById(R.id.dynamiclayout);
                ll.setOrientation(LinearLayout.VERTICAL);
                ll.setPadding(10, 300, 10, 10);
                LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,
                        LinearLayout.LayoutParams.WRAP_CONTENT);

                myButton.setLayoutParams(lp);
                btnid= myButton.getId();
                myButton.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                       switch (btnid) {
                           case 1:case 2:case 3:case 
                               Intent intent = new Intent(TimeStudy.this, CollectSample.class);
                           startActivity(intent);
                               break;
                       }

                    }
                });

                ll.addView(myButton, lp);
                i++;

            }
        switch (btnid) {
            case 1:case 2:case 3:
                    SharedPreferences average = getSharedPreferences("avg", 0);
                String avgbtn = average.getString("btnavg", "");


                settings = getSharedPreferences("dynamicbtname", 0);
                btnname = settings.getString("btnname", "");
                ar.add(btnname);

                String styledText = "<font color='#008000'>" + btnname + "</font>" + "&nbsp" + "&nbsp" + "&nbsp"
                        + "<small>"
                        + avgbtn + "</font>"
                        + "<small>";
                myButton.setText(Html.fromHtml(styledText));

                myButton.setGravity(Gravity.CENTER | Gravity.LEFT);
                break;
        }

我想要这样的结果即使在创建了所有三个按钮和单击1个按钮之后也没有在第一个按钮上显示。 enter image description here

如果我在创建2或第3个按钮数据后按1按钮返回到最近的按钮,我会得到这个。 enter image description here

事先感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

这有两种方式。

1)通过将其与

中传递的视图变量进行比较来检查

2)使用OnClickListener实现,该实现知道它是哪一个(通过使用不同的类,或使用一个带有参数的类)。