2012-06-19 137 views
2

我想在長時間按下按鈕時創建浮動上下文菜單。我已經閱讀了所有的答案,但仍然是這樣,我正在讓自己瘋狂。這是我的代碼:Android中的浮動上下文菜單

R.menu.menu.xml

<?xml version="1.0" encoding="utf-8"?> 
    <menu 
     xmlns:android="http://schemas.android.com/apk/res/android"> 

     <item android:id="@+id/MnuOpc1" android:title="Opcion1" 
       android:icon="@drawable/ic_launcher"></item> 
     <item android:id="@+id/MnuOpc2" android:title="Opcion2" 
       android:icon="@drawable/ic_launcher"></item> 
     <item android:id="@+id/MnuOpc3" android:title="Opcion3" 
       android:icon="@drawable/ic_launcher"></item> 

    </menu> 

OnCreateContextMenu(...)

@Override 
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { 
    super.onCreateContextMenu(menu, v, menuInfo); 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.menu, menu); 
} 

onContextItemSelected(...)

@Override 
public boolean onContextItemSelected(MenuItem item) { 
    Log.v("Hello...","I got the switch"); 

    switch (item.getItemId()) { 
    case R.id.MnuOpc1: 
     Log.v("Hello...","Option 1"); 
     return true; 
    case R.id.MnuOpc2: 
     Log.v("Hello...","Option 2"); 
     return true; 
    default: 
     return super.onContextItemSelected(item); 
    } 

我認爲上面的所有代碼都是正確的,但在registerForContextMenu中調用時我缺少一些東西:

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    setContentView(R.layout.main); 
    linear = (LinearLayout) findViewById(R.layout.main); 
    registerForContextMenu(linear); 

我試過registerForContextMenu(getListView());但它不起作用,我從Eclipse中收到錯誤。我究竟做錯了什麼?

+0

從Eclipse獲得什麼錯誤? – Nate

回答

2

你說你試圖爲一個按鈕創建一個上下文菜單,但是在你的onCreate()方法中你註冊了一個LinearLayout的上下文菜單。不知道你是否真的得到了什麼錯誤。

+0

我在同一個線性佈局中有一些按鈕,並且我想讓它們在長時間按下時膨脹上下文菜單。錯誤是:「方法getListView()未定義類型LinearLayout」 – Worldgineer

+0

'linear =(LinearLayout)findViewById(R.layout.main); registerForContextMenu(線性);'看起來很適合我。當你以這種方式嘗試時,你仍然得到一個錯誤,或者它只是不工作?你的main.xml佈局是什麼樣的? – Nate