2009-08-17 49 views
3

我在某些設備上遇到以下情況:當使用單擊字段並期待響應,而不是正確響應該單擊事件時,設備將在屏幕底部中心顯示上下文菜單。黑莓軌跡球點擊,而不是響應事件,上下文菜單顯示爲什麼?

navigationUnclick和trackwheelUnclick
從我讀過,我可以覆蓋navigationUnclick和trackwheelUnclick防止菜單無法顯示。我這樣做是因爲屏幕級別,但複製居中菜單的場景很困難。這是否正確?

爲什麼會發生這種情況?有什麼辦法可以解決這個問題嗎?

回答

6

我最近發生了這種情況。我正在擴展MainScreen以提供一些基本功能,但不需要上下文菜單。從avigationClick()中刪除此行爲,返回true

public class MyScreen extends MainScreen { 
    protected boolean navigationClick(int status, int time) { 
     /* 
     ... custom behavior ... 
     */ 
     return true; 
     // the following line would trigger the context menu 
     //return super.navigationClick(status, time); 
    } 
} 

我根本不需要覆蓋navigationUnclick()。不同於@ JustinD的方法是覆蓋onMenu(),這隻能防止菜單在這種情況下出現 - 而不是在整個屏幕上(你可能想要的,這可能是更好的方法)。

無論如何,這是我最近使用點擊和菜單的經驗。

+0

這是偉大的,非常簡潔,完美的作品! – AtariPete 2009-08-22 15:39:19

+0

+1應該注意,雖然返回true指定事件已被使用,並且其他監聽器不應該處理事件。這就是爲什麼菜單不會顯示。 – Fostah 2009-08-27 01:00:00

1

你可以發佈你的代碼嗎?嘗試覆蓋trackwheelClick和navigationClick而不是Unlick方法。還要確保你在這些方法中返回true。

1

如果你重寫onMenu並返回true(你處理菜單事件),那麼菜單不會顯示...假設你不需要完整的菜單 - 如果你想要完整的菜單而不是上下文菜單,那麼只是做什麼揚說,你應該沒事 - 確保返回true或否則事件會冒泡並最終產生菜單

public class MyClass Extends MainScreen 
{ 
    /// 
    // Override onMenu to prevent menu from coming up when you click trackwheel 
    public boolean onMenu(int instance) 
    { 
    return true; 
    } 
} 
0

你可以在你的MainScreen使用CONSUME_CLICK風格上的所有字段...

相關問題