0
我想如果有人能幫助解決這個問題,我試圖修復我的代碼。我真的絕望了!onItemContextMenu和按鈕編程創建的問題
我想知道是否有可能從contextmenu中獲取我創建的按鈕的所有信息,並在稍後使用setText函數。
好吧,首先,我創建了一些按鈕(如音板的應用程序)通過tablerow
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 Alert,並讓它引入新文本的可能性。
@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);
}
的問題是,我不能使用它的ID從R.java,因爲我已經創建的按鈕編程...
是否有此問題的任何解決方案?
我該怎麼做? – cesards 2011-04-03 12:23:13
我認爲最好的選擇,我應該保持在一個數組中的按鈕,並得到它的位置? – cesards 2011-04-03 12:53:44
謝謝,我已經使用了一組按鈕,並且通過它的ID獲取按鈕。非常感謝!!! – cesards 2011-04-03 19:23:06