2017-05-03 36 views
0

我試圖在用戶按下時得到Enter鍵。Android Edittext按鍵不會觸發

我嘗試了很多代碼,但在模擬器和設備中都沒有得到Enter鍵。

這裏是我的代碼:

public class MainActivity extends AppCompatActivity implements View.OnKeyListener { 
String barkodsifre; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    EditText sifre = (EditText) findViewById(R.id.barkodsifre); 
    sifre.setOnKeyListener(this); 
} 
public boolean onKey(View v, int keyCode, KeyEvent event) { 
    if ((event.getAction() == KeyEvent.ACTION_DOWN) && 
      (keyCode == KeyEvent.KEYCODE_ENTER)) { 
     Log.i("a","b"); 
     return true; 
    } 
    return false; 
} 

}

只有1的EditText和XML一個TextView。數據將被條形碼掃描器輸入到編輯文本。條形碼掃描器將在掃描的條形碼末尾發送「Enter」。 我從條形碼掃描器發送'輸入'在條形碼的末尾,但不知何故,它從不處理輸入密鑰。

是代碼錯過了什麼東西或代碼是完全錯誤的?我如何處理來自條碼掃描器的「輸入」鍵。

這裏是我的xml:

<RelativeLayout 
    android:layout_width="368dp" 
    android:layout_height="495dp" 
    tools:layout_editor_absoluteX="8dp" 
    tools:layout_editor_absoluteY="8dp"> 

    <TextView 
     android:id="@+id/lblbarkod" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerHorizontal="true" 
     android:layout_centerVertical="true" 
     android:ems="10" 
     android:inputType="none" 
     android:text="Barkod Giriniz!" 
     android:textAlignment="center" 
     android:textSize="30sp" 
     android:textStyle="bold" /> 

    <EditText 
     android:id="@+id/barkodsifre" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignEnd="@+id/lblbarkod" 
     android:layout_alignLeft="@+id/lblbarkod" 
     android:layout_alignRight="@+id/lblbarkod" 
     android:layout_alignStart="@+id/lblbarkod" 
     android:layout_below="@+id/lblbarkod" 
     android:imeOptions="actionGo|flagNoFullscreen" 
     android:inputType="textPassword" 
     android:maxLines="1" 
     android:ems="10" /> 

</RelativeLayout> 

回答

0
@Override <----------------!!!!! 
public boolean onKey(View v, int keyCode, KeyEvent event) { 
    if ((event.getAction() == KeyEvent.ACTION_DOWN) && 
      (keyCode == KeyEvent.KEYCODE_ENTER)) { 
     Log.i("a","b"); 
     return true; 
    } 
    return false; 
} 
+0

對不起,我不明白你的答案。如果你的意思是我需要在Onkey方法上面寫入覆蓋,我做到了,它仍然不起作用。 –

0

試試這個:

public class MainActivity extends AppCompatActivity implements EditText.OnKeyListener { 
    String barkodsifre; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     EditText sifre = (EditText) findViewById(R.id.barkodsifre); 
     sifre.setOnKeyListener(this); 
    } 

    @Override 
    public boolean onKey(View v, int keyCode, KeyEvent event) { 
     if ((event.getAction() == KeyEvent.ACTION_DOWN) && 
      (keyCode == KeyEvent.KEYCODE_ENTER)) { 
      Log.i("a","b"); 
      return true; 
     } 
     return false; 
    } 
} 
相關問題