2012-07-10 23 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; 
      } 

    } 



//...... 

} 
相關問題