我有一个功能:
public void vfShareQuote (String textToShare){
Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_TEXT, textToShare);
sendIntent.setType("text/plain");
startActivity(sendIntent);
}
还有很多以编程方式创建的按钮,其中有两个:
Button agafon_1 = new Button(this);agafon_1.setText(R.string.agafon_1);llPreViewList.addView(agafon_1, lParams);
Button agafon_2 = new Button(this);agafon_2.setText(R.string.agafon_2);llPreViewList.addView(agafon_2, lParams);
这是OnClickListener:
OnClickListener oclShareQuote = new OnClickListener() {
@Override
public void onClick(View v) {
//Set the text based on the selected button and send it to function vfShareQuote
switch (v.getId()) {
case R.string.agafon_1:
vfShareQuote(getResources().getText(R.string.name_agafon)+":\n"+getResources().getText(R.string.agafon_1));
break;
case R.string.agafon_2:
vfShareQuote(getResources().getText(R.string.name_agafon)+":\n"+getResources().getText(R.string.agafon_2));
break;
}
}
};
当然:
agafon_1.setOnClickListener(oclShareQuote);
agafon_2.setOnClickListener(oclShareQuote);
但是当你按下按钮时 - 没有任何反应。为什么?或者是以编程方式创建按钮? 怎么办? 由谷歌翻译。
答案 0 :(得分:4)
因为R.string.agafon_1
和R.string.agafon_2
不是ID。它们只是字符串资源的id。将id设置为按钮并改为使用它们。使用像
agafon_1.setId(id1);
agafon_2.setId(id2);
其中id1和id2是两个int。并使用它们
OnClickListener oclShareQuote = new OnClickListener() {
@Override
public void onClick(View v) {
//Set the text based on the selected button and send it to function vfShareQuote
switch (v.getId()) {
case id1:
vfShareQuote(getResources().getText(R.string.name_agafon)+":\n"+getResources().getText(R.string.agafon_1));
break;
case id2:
vfShareQuote(getResources().getText(R.string.name_agafon)+":\n"+getResources().getText(R.string.agafon_2));
break;
}
}
};
答案 1 :(得分:0)
问题出在交换机块中..您没有为按钮设置Id并且您正在尝试访问它们onClick
..
试
agafon_1.setId(1);
agafon_2.setId(2);
然后在开关块中使用这些id
OnClickListener oclShareQuote = new OnClickListener() {
@Override
public void onClick(View v) {
//Set the text based on the selected button and send it to function vfShareQuote
switch (v.getId()) {
case 1://agafon_1 is clicked
vfShareQuote(getResources().getText(R.string.name_agafon)+":\n"+getResources().getText(R.string.agafon_1));
break;
case 2://agafon_2 is clicked
vfShareQuote(getResources().getText(R.string.name_agafon)+":\n"+getResources().getText(R.string.agafon_2));
break;
}
}
};
答案 2 :(得分:0)
以编程方式创建按钮时,您应该以这种方式为每个按钮提供一个id:
agafon_1.setId("btn id");
并且还有一个问题,对于一些android sdks交换机案例不再工作, 你必须使用if语句。