2012-09-23 48 views
0

我做了一個上下文菜單,但我不能讓itemListener工作,因爲我不能使用開關大小寫選定的標題(因爲它只適用於整數,而不是字符串)。上下文菜單項監聽器

我想單擊項目時做些什麼。雖然我可以用(IF語句)做到。

public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_overview); 
     View view=findViewById(R.id.myView); 
     registerForContextMenu(view); 
    } 

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

    menu.setHeaderTitle("Context Menu"); 
     menu.add(0, v.getId(), 0, "Item 1"); 
     menu.add(0, v.getId(), 0, "Item 2"); 
    } 

    @Override 
    public boolean onContextItemSelected(MenuItem item) { 

     switch(item.getItemId()) { 
     case 0: Toast.makeText(this, "Item selected 1", Toast.LENGTH_SHORT).show(); 

      break; 
     case 1: Toast.makeText(this, "Item selected 2", Toast.LENGTH_SHORT).show(); 

      break; 
     default: 

    } 

     return true; 
    } 

回答

0

您正在將您的選項的兩個ID設置爲相同的東西,所以這不起作用。 add()方法中的第二個參數應該是唯一的ID,以便您確定稍後點擊的選項。嘗試類似:

//Class level variables 
static int OPTION_ONE = 1; 
static int OPTION_TWO = 2; 

//Adding the options 
menu.add(0, OPTION_ONE, 0, "Item 1"); 
menu.add(0, OPTION_TWO, 0, "Item 2"); 

//Determining which one was clicked 
switch(item.getItemId()) { 
    case OPTION_ONE: 
     Toast.makeText(this, "Item selected 1", Toast.LENGTH_SHORT).show(); 

     break; 
    case OPTION_TWO: 
     Toast.makeText(this, "Item selected 2", Toast.LENGTH_SHORT).show(); 

     break; 
    default: 
+0

謝謝,它的工作.. – Tanvir