Handle BACK key event in child view
- by Mick Byrne
In my app, users can tap on image thumbnails to see a full size version. When the thumbnail is tapped a bunch of new views are created in code (i.e. no XML), appended at the end of the view hierarchy and some scaling and rotating transitions happen, then the full size, high res version of the image is displayed. Tapping on the full size image reverses the transitions and removes the new views from the view hierarchy.
I want users to also be able to press the BACK key to reverse the image transitions. However, I can't seem to catch the KeyEvent. This is what I'm trying at the moment:
// Set a click listener on the image to reverse everything
frameView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0)
{
zoomOut(); // This works fine
}
});
// Set the focus onto the frame and then set a key listener to catch the back buttons
frameView.setFocusable(true);
frameView.setFocusableInTouchMode(true);
frameView.requestFocus();
frameView.setOnKeyListener(new OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event)
{
// The code never even gets here !!!
if(keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0)
{
zoomOut();
return true;
}
return false;
}
});