MenuListener now using WeakHashMap to avoid memory leakage.