2014-04-07 17 views
0

我的關鍵事件正在模擬器上工作,但是當我安裝了我的應用程序時,我的手機無法識別其關鍵事件。幫助我在這 我使用View.onKey事件偵聽器。 我的代碼是: - 殼體1:e1.setOnKeyListener(新View.OnKeyListener(){重要事件在模擬器上工作,但在移動設備上不工作

 @Override 
     public boolean onKey(View arg0, int arg1, KeyEvent arg2) { 
      // TODO Auto-generated method stub 
      Typeface type = Typeface.createFromAsset(getAssets(),"fonts/Respective_Swashes_Slanted.ttf"); 
       if(arg2.getAction()==KeyEvent.ACTION_DOWN) 
       { 

        e2.setTypeface(type); 
        e2.setTextSize(30); 
        e2.setText(e1.getText()); 
       } 
      return false; 
     } 
    }); 



     break; 
    case 2: e1.setOnKeyListener(new View.OnKeyListener() { 

     @Override 
     public boolean onKey(View arg0, int arg1, KeyEvent arg2) { 
      // TODO Auto-generated method stub 
      Typeface type = Typeface.createFromAsset(getAssets(),"fonts/doridrobot.ttf"); 
       if(arg2.getAction()==KeyEvent.ACTION_DOWN) 
       { 

        e2.setTypeface(type); 
        e2.setTextSize(30); 
        e2.setTextColor(Color.GREEN); 
        e2.setText(e1.getText()); 
       } 
      return false; 
     } 
    }); 

     break; 

殼體3:e1.setOnKeyListener(新View.OnKeyListener(){

 @Override 
     public boolean onKey(View arg0, int arg1, KeyEvent arg2) { 
      // TODO Auto-generated method stub 
      Typeface type = Typeface.createFromAsset(getAssets(),"fonts/future.ttf"); 
       if(arg2.getAction()==KeyEvent.ACTION_DOWN) 
       { 

        e2.setTypeface(type); 
        e2.setTextSize(30); 
        e2.setTextColor(Color.RED); 
        e2.setText(e1.getText()); 
       } 
      return false; 
     } 
    }); 

     break; 

情況下4:e1.setOnKeyListener(新View.OnKeyListener(){

@Override 
public boolean onKey(View arg0, int arg1, KeyEvent arg2) { 
    // TODO Auto-generated method stub 
    Typeface type = Typeface.createFromAsset(getAssets(),"fonts/flattered.ttf"); 
     if(arg2.getAction()==KeyEvent.ACTION_DOWN) 
     { 

      e2.setTypeface(type); 
      e2.setTextSize(30); 
      e2.setTextColor(Color.RED); 
      e2.setText(e1.getText()); 
     } 
    return false; 
} 

});

break; 

    } 

} 

@Override 
public void onNothingSelected(AdapterView<?> arg0) { 
    // TODO Auto-generated method stub 

} 
+0

我需要使用ontouch事件嗎? – AnonymousDev

回答

1

documentation

當硬件密鑰被分配到一個視圖調用。這允許 聽衆有機會在目標視圖之前作出響應。

軟件鍵盤上的按鍵通常不會觸發此方法,儘管在某些情況下有些人可能會選擇這樣做。不要 假設軟件輸入法必須是基於密鑰的;即使是這樣,它也可能以不同於預期的方式使用按鍵,所以沒有可靠捕捉軟輸入按鍵的方法。

所以基本上如果你的設備沒有硬件鍵盤那麼onKey可能不會觸發。 根據您的要求,您可以使用

onTouchListener - 在任何觸摸事件

onClickListener調用 - 點擊視圖時調用。

或android提供的任何其他listeners

+0

如何使用onTouch事件來檢測鍵盤按鍵是否被按下? – AnonymousDev

+0

我不確定是否有可靠的方法來檢測onTouch事件中的鍵盤按鍵,因爲它適用於任何視圖。如果您使用的是文本字段,則可能需要使用[textWatcher](http://developer.android.com/reference/android/text/TextWatcher.html)。通常當鍵盤啓動時,用戶正在編輯某種文本字段。每當文本框中的內容發生變化時,文本觀察者都會通知您。 – Naveed

+0

非常感謝.... – AnonymousDev

相關問題