2012-09-27 85 views
0

我能得到OptionsMenu點擊倍,安卓OptionsMenu點擊次數

我想獲得價值的onReceive使用,這樣

@Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     super.onCreateOptionsMenu(menu); 
     SubMenu fileMenu = menu.addSubMenu(0, 7, Menu.NONE, "歌曲");  
     fileMenu.add(0, 1, Menu.NONE, "A"); 
     fileMenu.add(0, 2, Menu.NONE, "B"); 
     fileMenu.add(0, 3, Menu.NONE, "C"); 
     fileMenu.add(0, 4, Menu.NONE, "D"); 
     return true; 
    } 
@Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     switch (item.getItemId()) { 
     case 1: 

       Toast.makeText(this, "A", Toast.LENGTH_SHORT).show(); 
       break; 
     case 2: 

       Toast.makeText(this, "B", Toast.LENGTH_SHORT).show(); 
       break; 
     case 3: 

       Toast.makeText(this, "C", Toast.LENGTH_SHORT).show(); 
       break; 
     case 4: 
       Toast.makeText(this, "D", Toast.LENGTH_SHORT).show(); 
       break; 
     default: 
      return true; 
     } 
     return super.onOptionsItemSelected(item); 
    } 
IntentFilter intent = new IntentFilter(); 
intent.addAction(BluetoothDevice.ACTION_FOUND); 
registerReceiver(searchDevices, intent); 
private BroadcastReceiver searchDevices = new BroadcastReceiver() { 
     public void onReceive(Context context, Intent intent) { 
     if(OptionsMenu click times == 2) 
    { 

    } 
} 

因爲我只是過程只有這部分,

請幫我理解如何解決提供意見謝謝

回答

0

巴厘島爲您提出的問題提供了一個很好的解決方案。但是有一種更簡單的方法可以在不使用接收器的情況下完成此任務。

創建一個新的類,其中包含一個用於點擊數的靜態容器。

即:

public class ParamValues{ 

private static int clickNums= 0; 

    /** 
    * @return the clickNumber 
    */ 
    public static int getClickNums() { 
     return clickNums; 
    } 

    /** 
    * Sets the clickNumber 
    */ 
    public static int setClickNum(int clickNum) { 
     clickNums = clickNum; 
    } 
} 

然後爲您OptionsMenu創建onClickHandler,然後單擊處理程序中添加像somecode。

int count = ParamValues.getClickNum(); 
count++; 
ParamValues.setClickNum(count); 

現在,您可以在代碼中的任意位置獲得此點擊次數。如果你想確保它是同步的,你可以添加一個函數來處理你想要的onClick。

即:

if(ParamValues.getClickNum() == 2) 
    { 
// Do whatever 
    } 

然後你可以在這裏重置計數值或任何你想通過使用ParamValues類方便二傳手重置。

使用接收器不能保證代碼的執行時間。

0

從你給出的細節:

你可以在你的活動創建一個數據成員,將存儲的次數,被壓在menukey,每它按下時增加它:

private int menuPressedCount = 0; 

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) 
{ 
    if (keyCode == KeyEvent.KEYCODE_MENU) 
     menuPressedCount++; 
} 

而且,您可以通過給你的接收器,puting它在Intent,該接收方將獲得:

Intent intent = ...; 
intent.putExtra("menu_pressed_count", menuPressedCount); 

而在的onReceive():

int pressedCount = intent.getIntExtra("menu_pressed_count", 0); 

告訴我,這是不是你是什麼looki ng for!