2017-10-10 3 views
0

Activityの物理キーボードで数値または文字が押されたときに通知を受け取りたいと考えています。私は、単一のビューを持つアクティビティを持つAndroid Studioで簡単なアプリケーションを作成しました。入力、削除などはすべて受信されますが、実際の文字や数字は受信されません。私はTextViewまたはEditTextビューを使用したくありません。私はちょうど簡単なビューを使用してキーストロークを見ることができるようにしたい。どんな助けもありがとうございます。Androidの英数字キーがアクティビティまたはビューで受信されない

public class MainActivity extends AppCompatActivity { 
public static final String TAG = "My Activity"; 
TextView view; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    view = (View)findViewById(R.id.view); 
    view.setOnKeyListener(new EditText.OnKeyListener() { 
     @Override 
     public boolean onKey(View v, int keyCode, KeyEvent event) { 
      Log.d(TAG, "onKey " + keyCode); 
      return false; 
     } 
    }); 
} 

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    Log.d(TAG, "KEY PRESSED " + keyCode); 
    return super.onKeyDown(keyCode, event); 
} 

@Override 
public boolean dispatchKeyEvent(KeyEvent event) { 
    Log.d(TAG, "DISPATCH KEY" + event.getKeyCode()); 
    return super.dispatchKeyEvent(event); 
} 
} 

とレイアウトは次のとおりです:ここで

は、コードで次のように

<?xml version="1.0" encoding="utf-8"?> 
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
tools:context="com.plexistream.myapplication.MainActivity"> 
<View 
    android:id="@+id/view" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    app:layout_constraintBottom_toBottomOf="parent" 
    app:layout_constraintLeft_toLeftOf="parent" 
    app:layout_constraintRight_toRightOf="parent" 
    app:layout_constraintTop_toTopOf="parent" 
    /> 
</android.support.constraint.ConstraintLayout> 

答えて

0

focusで試してみてください。

this.requestFocus(); 
this.setFocusableInTouchMode(true); 
+0

「this」はビューを指すものとします。私はあなたのコードを試しましたが、違いはありません。私はonKeyDown()とdispatchKeyEvent()を呼び出すのは、英数字のキーを押さなくても呼び出されます。だから、私は焦点が問題だとは思わない。 – user8749866

0

これは私が使用しているエミュレータに問題があるようです。 NoxPlayerはこれらのキーを渡していません。私はBlueStacksに切り替えたので、もう問題はありません。

関連する問題