2016-03-18 111 views
-1

下面是一个代码示例,它不起作用。 我在MainActivity如何使用硬菜单按钮开始新的活动?

@Override 
public boolean onKeyLongPress(int keyCode, KeyEvent event) { 
    Intent intent = new Intent(this, PrefActivity.class); 
    if (keyCode == KeyEvent.KEYCODE_MENU) { 
     startActivity(intent); 
     return true; 
    } 
    return super.onKeyLongPress(keyCode, event); 
} 
+1

你可以发布错误跟踪? –

+0

给人打预防针它的意图构造函数的第一个参数,“这个” 尝试从您的活动得到一个上下文( 语境续=这一点; 和创造一个像 新意图的意图(续,PrefActivity.class ) – FrancescoC

+0

您是否在清单中定义了PrefActivity? –

回答

0

如果您只想单击按钮而不按住按钮,则可以使用onKeyUp

@Override 
public boolean onKeyUp(int keyCode, KeyEvent event) { 
    switch (keyCode) { 
     case KeyEvent.KEYCODE_MENU: 
      startActivity(new Intent(this, LoginActivity.class)); 
      return true; 
    } 
    return super.onKeyUp(keyCode, event); 
} 

如果你想处理onKeyLongPress,那么你可以阅读更多onKeyDown and onKeyLongPress

的原因,它不被你的活动由onKeyDown消耗的工作,这是连续发射,直到你放手的密钥和onKeyLongPress永远不会被调用。

-3
@Override 
public boolean onKeyLongPress(int keyCode, KeyEvent event) { 

if (keyCode == KeyEvent.KEYCODE_MENU) { 
Intent intent = new Intent(getApplicationContext(), PrefActivity.class); 
    startActivity(intent); 
    return true; 
} 
return super.onKeyLongPress(keyCode, event); 
} 

加入这个方法试试吧!

+0

将其替换为getApplicationContext()。试试吧 –

+0

如果'this'是一个类似活动的上下文,则不应该改变任何东西 –

相关问题