我想如果有人可以帮助解决问题,我想在我的代码中修复。我真的很沮丧!
我想知道是否可以从contextmenu获取我创建的按钮的所有信息,并稍后使用setText函数。
好的,首先我创建了一个带有一些按钮的表格(如音板应用程序)
for (int j = 0 ; index > 0 && j < 2 ; j++) {
final CustomToggleButton tagB = new CustomToggleButton(this);
tagB.setId(index);
...
...
registerForContextMenu(tagB);
tagB.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
....
}
...
}
}
其次,我让每个按钮都有一个“编辑”选项来更改其中的文字:
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo)menuInfo;
menu.setHeaderTitle("Opciones de la etiqueta");
menu.add(0, v.getId(), 0, "Edit");
}
最后,我使用onContextItemSelected创建EditText警报,并让我们介绍新文本。
@Override
public boolean onContextItemSelected(final MenuItem item) {
if (item.getTitle() == "Edit") {
AlertDialog.Builder alert = new AlertDialog.Builder(this);
final EditText input = new EditText(this);
alert.setView(input);
alert.setTitle("Nombre del tag");
alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
String value = input.getText().toString().trim();
Log.v(null, "nombre del tag nuevo: "+value);
Toast.makeText(getApplicationContext(), value,Toast.LENGTH_SHORT).show();
int button_id = item.getItemId(); // BUTTON ID?
//CustomToggleButton tagB = (CustomToggleButton) findViewById(R.id.button_id);//DOESN'T WORK!!
//CustomToggleButton tagB = (CustomToggleButton) findViewById(button_id); // NEITHER DOESN'T WORK!!
}
});
alert.setNegativeButton("Cancel",new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
dialog.cancel();
}
});
alert.show();
return true;
}
else return super.onContextItemSelected(item);
}
问题是我无法使用R.java中的id,因为我已经以编程方式创建了按钮...
这个问题有解决方法吗?
答案 0 :(得分:0)
您不需要按钮的ID。您需要引用通过代码创建的Button对象。
编辑:只需使用您需要的范围定义按钮对象即可。你可能需要课程范围。如果您愿意,可以使用数组或列表。根据您拥有的按钮数量,这可能是最佳选择。