我在按钮点击的活动中创建了动态按钮。当我在活动中创建多个按钮时,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>" + " " + " " + " "
+ "<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
事先感谢任何帮助。答案 0 :(得分:0)
这有两种方式。
1)通过将其与
中传递的视图变量进行比较来检查2)使用OnClickListener实现,该实现知道它是哪一个(通过使用不同的类,或使用一个带有参数的类)。