Handle key down event from Activity
Description
To demonstrate how activities interact with the user, the following example overrides some of the methods defined in the activity's base class.
Example
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:layout_width="214dp"
android:layout_height="wrap_content"
android:text="Your Name" />
<EditText
android:id="@+id/txt1"
android:layout_width="214dp"
android:layout_height="wrap_content" />
<Button
android:id="@+id/btn1"
android:layout_width="106dp"
android:layout_height="wrap_content"
android:text="OK" />
<Button
android:id="@+id/btn2"
android:layout_width="106dp"
android:layout_height="wrap_content"
android:text="Cancel" />
</LinearLayout>
Java code
package com.java2s.myapplication3.app;
/*w ww.ja va2s . co m*/
import android.app.Activity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.widget.Toast;
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{
switch (keyCode)
{
case KeyEvent.KEYCODE_DPAD_CENTER:
Toast.makeText (getBaseContext(),
"Center was clicked",
Toast.LENGTH_LONG).show();
break;
case KeyEvent.KEYCODE_DPAD_LEFT:
Toast.makeText (getBaseContext(),
"Left arrow was clicked",
Toast.LENGTH_LONG).show();
break;
case KeyEvent.KEYCODE_DPAD_RIGHT:
Toast.makeText (getBaseContext(),
"Right arrow was clicked",
Toast.LENGTH_LONG).show();
break;
case KeyEvent.KEYCODE_DPAD_UP:
Toast.makeText (getBaseContext(),
"Up arrow was clicked",
Toast.LENGTH_LONG).show();
break;
case KeyEvent.KEYCODE_DPAD_DOWN:
Toast.makeText (getBaseContext(),
"Down arrow was clicked",
Toast.LENGTH_LONG).show();
break;
}
return false;
}
}
Note
When pressing any keys on your device, the view with focus will try to handle the event.
If you press the up or down directional arrow key, the EditText view does not handle this, and instead passes the event to the activity.
The onKeyDown() method returns a boolean result. Returning true tells the system that you are done with the event and the system should not proceed further with it.
For example,
@Override// www . j av a 2 s . c o m
public boolean onKeyDown(int keyCode, KeyEvent event)
{
switch (keyCode)
{
case KeyEvent.KEYCODE_DPAD_CENTER:
Toast.makeText(getBaseContext(),
"Center was clicked",
Toast.LENGTH_LONG).show();
//break;
return true;
case KeyEvent.KEYCODE_DPAD_LEFT:
Toast.makeText(getBaseContext(),
"Left arrow was clicked",
Toast.LENGTH_LONG).show();
//break;
return true;
...
}
return false;
}