2011-04-03 39 views
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,因爲我已經創建的按鈕編程...

是否有此問題的任何解決方案?

回答

0

您不需要該按鈕的ID。您需要引用通過代碼創建的Button對象。

編輯:只需定義您需要的範圍的按鈕對象。你可能需要類作用域。如果您願意,可以使用數組或列表。取決於你有多少個按鈕,這可能是要走的路。

+0

我該怎麼做? – cesards 2011-04-03 12:23:13

+0

我認爲最好的選擇,我應該保持在一個數組中的按鈕,並得到它的位置? – cesards 2011-04-03 12:53:44

+0

謝謝,我已經使用了一組按鈕,並且通過它的ID獲取按鈕。非常感謝!!! – cesards 2011-04-03 19:23:06