Java onItemContextMenu和button以编程方式创建问题
我想如果有人能帮我解决这个问题,我正试图在我的代码中修复这个问题。我真的很绝望 我想知道是否有可能从contextmenu中获取我创建的按钮的所有信息,然后使用setText函数 好的,首先我创建了一个带有一些按钮的tablerow(比如一个音板应用程序) 最后,我使用onContextItemSelected创建EditText警报,并允许引入新文本的可能性Java onItemContextMenu和button以编程方式创建问题,java,android,Java,Android,我想如果有人能帮我解决这个问题,我正试图在我的代码中修复这个问题。我真的很绝望 我想知道是否有可能从contextmenu中获取我创建的按钮的所有信息,然后使用setText函数 好的,首先我创建了一个带有一些按钮的tablerow(比如一个音板应用程序) 最后,我使用onContextItemSelected创建EditText警报,并允许引入新文本的可能性 @Override public boolean onContextItemSelected(final MenuItem item)
@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,因为我已经通过编程创建了按钮
这个问题有什么解决办法吗???您不需要按钮的ID。您需要引用通过代码创建的按钮对象
编辑:只需定义具有所需范围的按钮对象。您可能需要类范围。如果愿意,可以使用数组或列表。取决于你有多少个按钮,这可能是最好的选择。我认为最好的选择是,我是否应该将按钮保持在一个数组中并获取其位置?谢谢你,我使用了一个数组的按钮,我通过它的ID获取按钮。非常感谢!!!
@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");
}
@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);
}