Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java onItemContextMenu和button以编程方式创建问题_Java_Android - Fatal编程技术网

Java onItemContextMenu和button以编程方式创建问题

Java onItemContextMenu和button以编程方式创建问题,java,android,Java,Android,我想如果有人能帮我解决这个问题,我正试图在我的代码中修复这个问题。我真的很绝望 我想知道是否有可能从contextmenu中获取我创建的按钮的所有信息,然后使用setText函数 好的,首先我创建了一个带有一些按钮的tablerow(比如一个音板应用程序) 最后,我使用onContextItemSelected创建EditText警报,并允许引入新文本的可能性 @Override public boolean onContextItemSelected(final MenuItem item)

我想如果有人能帮我解决这个问题,我正试图在我的代码中修复这个问题。我真的很绝望

我想知道是否有可能从contextmenu中获取我创建的按钮的所有信息,然后使用setText函数

好的,首先我创建了一个带有一些按钮的tablerow(比如一个音板应用程序)

最后,我使用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,因为我已经通过编程创建了按钮


这个问题有什么解决办法吗???

您不需要按钮的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);
}