2012-07-10 49 views
0

在我的android应用程序中,我使用自定义视图来加载作为活动的视图。现在,我想检测用户是否点击菜单按钮或不.hope下面的代码将解释情况。如何从Android的自定义视图类捕获按键?

我的自定义视图类:

public class LibraryHomeView extends LinearLayout implements OnKeyListener { 
//variable dec goes here.. 
public LibraryHomeView(Context context, AttributeSet attrs) { 
    super(context, attrs); 

    init(context,attrs); 
} 

private void init(Context con,AttributeSet att) { 
    //custom view implementation goes here... 
} 
@Override 
public boolean onKey(View v, int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_MENU) { 
     Log.d(TAG, "KeyEvent.KEYCODE_MENU"); 
      return true; 
     } 

} 

我的问题是,我不希望捕捉活动类此事件,我想从视图类captuer这个,但是当我按下菜单键也不会来到OnKey()方法。任何帮助?

回答

0

试试这个,

public boolean onKeyUp(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_MENU) { 
     // do something... 
    } 
    return true; 
    } 

编辑

public class LibraryHomeView extends LinearLayout { 

    public LibraryHomeView(Context context) { 
    super(context); 
    // TODO Auto-generated constructor stub 
    setFocusable(true); 
    } 
+0

我尝试使用“OnKeyUp”和“onKeyDown”,但没有发生任何事情。 – 2012-07-10 06:28:49

+0

你会得到任何错误? – 2012-07-10 06:29:37

+0

不,但当我按菜单键时,它不会来的方法。 – 2012-07-10 06:33:19

0

如果你能捕捉到你的活动的关键事件,那么很简单,把它传递给视图。只需从活动中调用视图内的方法即可。你可能有这样的事情(我没有在此计算机上日食,所以我直接在浏览器代码 - 我可能有语法错误):

public class LibraryHomeView extends LinearLayout { 

//...... 

    public void keyEventRecieved(String eventMessage) { 
     Log.d(TAG, eventMessage); 
    } 
//....... 
} 

和活动中:

public class myActivity extends Activity { 
LibraryHomeView control; 
//...... 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     control = (LibraryHomeView)findViewById(R.id.myCustomViewId); 
    } 

    @Override 
    public boolean onKey(View v, int keyCode, KeyEvent event) { 
     if (keyCode == KeyEvent.KEYCODE_MENU) { 
      Log.d(TAG, "KeyEvent.KEYCODE_MENU"); 
      control.keyEventRecieved("Yahooooo!"); 
       return true; 
      } 

    } 



//...... 

} 
相关问题