2011-08-03 25 views
0

我想知道如何在Android中使用上下文菜單長按一下按鈕時如何更改按鈕的標籤。我知道如何通過長按鼠標生成一個contextmenu,但我不知道如何訪問onContextItemSelected(MenuItem項目)方法中的點擊按鈕view。如何使用Android中的contextview修改tablelayout中的按鈕

此外,被點擊的按鈕位於tableLayout中,所以我不確定是否可以使用AdapterContextMenuInfo實例變量來訪問視圖。

@Override 
public boolean onContextItemSelected(MenuItem item){ 
    switch(item.getItemId()) { 
    case R.id.menu_edit: 
     //change button's text 
     return true; 
    case R.id.menu_delete: 
     return true; 
    case R.id.menu_cancel: 
     return true; 
    } 
    return super.onContextItemSelected(item); 
} 

任何洞察到如何做到這一點將不勝感激。

非常感謝先進。

回答

0

在調用onContextItemSelected(...)之前,android調用onCreateContextMenu(...)。如果您重寫此方法,則可以將作爲參數傳入的View(這是被點擊的View)保存(到本地變量)。然後,在onContextItemSelected(...)中,可以使用保存的View對象修改文本。

例如:

View lastClickedView; 

@Override 
public void onCreateContextMenu(ContextMenu menu, View v, 
           ContextMenuInfo menuInfo) { 
    super.onCreateContextMenu(menu, v, menuInfo); 
    lastClickedView = v; 
} 

@Override 
public boolean onContextItemSelected(MenuItem item){ 
    switch(item.getItemId()) { 
     case R.id.menu_edit: 
     lastClickedView.setText("new button text"); 
     return true; 
     case R.id.menu_delete: 
     return true; 
     case R.id.menu_cancel: 
     return true; 
    } 
    return super.onContextItemSelected(item); 
} 
+0

真正有用的建議。非常感謝。 – grebwerd

0

您可以使用findViewById(id)獲取給定ID的視圖對象,然後調用setText就可以了。

switch(item.getItemId()) { 
    case R.id.menu_edit: 
    //change button's text 
    Button myButton = (Button) findViewById(R.id.menu_edit); 
    myButton.setText("new text");  
    return true; 
    case R.id.menu_delete: 
    return true; 
    case R.id.menu_cancel: 
    return true; 
} 
相關問題