如题?程序片段是怎样の?

解决方案 »

  1.   


    @Override  
            public boolean onKeyDown(int keyCode, KeyEvent event)  {  
                if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {   
                //按下的如果是BACK,同时没有重复  
                  //DO SOMETHING      
                }  
      
                return super.onKeyDown(keyCode, event);  
            }   希望对lz有用
    另外打个广告哈、、并非恶意的、、嘻嘻
    148784731 android高级技术群
      

  2.   

    一般的都会在down里拦截,但是不排除一些在上层屏蔽的设备,那就需要在dispatch里处理了。
      

  3.   

            @Override  
            public boolean onKeyDown(int keyCode, KeyEvent event)  {  
                if (keyCode == KeyEvent.KEYCODE_BACK) {   
                //监听到back键了,做你想要的处理就可以了,呵呵
                }  
                return super.onKeyDown(keyCode, event);  
            } 
      

  4.   

    activity中onKeyDown源码是这样写的
    public boolean onKeyDown(int keyCode, KeyEvent event)  {
            if (keyCode == KeyEvent.KEYCODE_BACK) {
                if (getApplicationInfo().targetSdkVersion
                        >= Build.VERSION_CODES.ECLAIR) {
                    event.startTracking();
                } else {
                    onBackPressed();
                }
                return true;
            }
            
            if (mDefaultKeyMode == DEFAULT_KEYS_DISABLE) {
                return false;
            } else if (mDefaultKeyMode == DEFAULT_KEYS_SHORTCUT) {
                if (getWindow().performPanelShortcut(Window.FEATURE_OPTIONS_PANEL, 
                        keyCode, event, Menu.FLAG_ALWAYS_PERFORM_CLOSE)) {
                    return true;
                }
                return false;
            } else {
                // Common code for DEFAULT_KEYS_DIALER & DEFAULT_KEYS_SEARCH_*
                boolean clearSpannable = false;
                boolean handled;
                if ((event.getRepeatCount() != 0) || event.isSystem()) {
                    clearSpannable = true;
                    handled = false;
                } else {
                    handled = TextKeyListener.getInstance().onKeyDown(
                            null, mDefaultKeySsb, keyCode, event);
                    if (handled && mDefaultKeySsb.length() > 0) {
                        // something useable has been typed - dispatch it now.                    final String str = mDefaultKeySsb.toString();
                        clearSpannable = true;
                        
                        switch (mDefaultKeyMode) {
                        case DEFAULT_KEYS_DIALER:
                            Intent intent = new Intent(Intent.ACTION_DIAL,  Uri.parse("tel:" + str));
                            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                            startActivity(intent);    
                            break;
                        case DEFAULT_KEYS_SEARCH_LOCAL:
                            startSearch(str, false, null, false);
                            break;
                        case DEFAULT_KEYS_SEARCH_GLOBAL:
                            startSearch(str, false, null, true);
                            break;
                        }
                    }
                }
                if (clearSpannable) {
                    mDefaultKeySsb.clear();
                    mDefaultKeySsb.clearSpans();
                    Selection.setSelection(mDefaultKeySsb,0);
                }
                return handled;
            }
        }
      

  5.   

    void onBackPressed() //Called when the activity has detected the user's press of the back key.
    在Activity里重写此方法即可