运行程序后,按键触屏全部没有反应public class ViewEvent extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(new GameView(this));
    }
}
public class GameView extends View implements Runnable {
Context mContext = null; public GameView(Context context) {
super(context);
mContext = context;
}    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event)
    {
     switch (keyCode)
     {
     case KeyEvent.KEYCODE_DPAD_UP:
     DisplayToast("按下:上键");
     break;
     }
     return super.onKeyDown(keyCode, event);
    }
    
    @Override
    public boolean onKeyUp(int keyCode, KeyEvent event)
    {
     switch(keyCode)
     {
     case KeyEvent.KEYCODE_DPAD_CENTER:
     DisplayToast("弹起:中建");
     break;
     }
     return super.onKeyUp(keyCode, event);
    }
    
    @Override
    public boolean onTouchEvent(MotionEvent event)
    {
     int iAction = event.getAction();
     if (iAction == MotionEvent.ACTION_CANCEL || 
     iAction == MotionEvent.ACTION_DOWN || 
     iAction == MotionEvent.ACTION_MOVE)
     {
     return false;
     }
    
     //获得触笔的位置
     int x = (int)event.getX();
     int y = (int)event.getY();
    
     DisplayToast("触笔点击位置:(" + x + ", " + y + ")");
     Log.e("GameView", "in onTouchEvent");
     return super.onTouchEvent(event);
    }
    
@Override
public void run() {
while (!Thread.currentThread().isInterrupted())
{
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
this.postInvalidate();
} }

    public void DisplayToast(String str)
    {
     Toast.makeText(mContext, str, Toast.LENGTH_SHORT).show();
    }}

解决方案 »

  1.   

    修改的地方1:
    public GameView(Context context) {
            super(context);
            setClickable(true);
            setFocusable(true);
            
            mContext = context;
        }
    修改地方2:
    @Override
        public boolean onKeyDown(int keyCode, KeyEvent event)
        {
            switch (keyCode)
            {
            case KeyEvent.KEYCODE_DPAD_UP:
                DisplayToast("按下:上键");
                break;
            }
            return false;
        }
        
        @Override
        public boolean onKeyUp(int keyCode, KeyEvent event)
        {
            switch(keyCode)
            {
            case KeyEvent.KEYCODE_DPAD_CENTER:
                DisplayToast("弹起:中建");
                break;
            }
            return false;
        }
        
        @Override
        public boolean onTouchEvent(MotionEvent event)
        {
            int iAction = event.getAction();
            if (iAction == MotionEvent.ACTION_CANCEL || 
                iAction == MotionEvent.ACTION_DOWN || 
                iAction == MotionEvent.ACTION_MOVE)
            {
                return true;
            }
            
            //获得触笔的位置
            int x = (int)event.getX();
            int y = (int)event.getY();
            
            DisplayToast("触笔点击位置:(" + x + ", " + y + ")");
            Log.e("GameView", "in onTouchEvent");
            return true;
        }你都是return的super.(**);
      

  2.   

    to 楼上:
         不适用super.(**)的原因是什么啊?还有return true和return false的区别?感谢!