项目上下文菜单和按钮以编程方式创建问题

时间:2011-04-03 11:05:08

标签: java android

我想如果有人可以帮助解决问题,我想在我的代码中修复。我真的很沮丧!

我想知道是否可以从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,因为我已经以编程方式创建了按钮...

这个问题有解决方法吗?

1 个答案:

答案 0 :(得分:0)

您不需要按钮的ID。您需要引用通过代码创建的Button对象。

编辑:只需使用您需要的范围定义按钮对象即可。你可能需要课程范围。如果您愿意,可以使用数组或列表。根据您拥有的按钮数量,这可能是最佳选择。