Tôi có một ứng dụng đơn giản chỉ chứa AutoCompleteTextView
(mã bên dưới). Tôi đã xác định được OnItemClickListener
và OnItemSelectedListener
. Nhấp vào các mục riêng lẻ từ các đề xuất thả xuống sẽ kích hoạt sự kiện onItemClick
. Tuy nhiên, với bàn phím bluetooth, sử dụng các phím mũi tên để điều hướng đến một mục nhất định dường như không kích hoạt sự kiện onItemSelected
(các nhật ký không được nhìn thấy cho sự kiện này).Android AutoCompleteTextView onItemSelectedListener không được kích hoạt bằng bàn phím bluetooth
Điều gì gây nên sự kiện onItemSelected
này? Tôi đã được ấn tượng rằng một số highlight
trên một trong các mục thả xuống, nhưng điều đó dường như không đúng.
Nếu OnItemSelectedListener
không phải là trình xử lý sự kiện chính xác cho mục được đánh dấu, có bất kỳ sự kiện nào đáp ứng yêu cầu này không?
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent">
<AutoCompleteTextView
android:id="@+id/autoCompleteTextView"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</RelativeLayout>
MainActivity.java
public class MainActivity extends Activity {
String[] options = {"a1", "a2", "a3", "b1", "b2", "b3", "b4", "b5"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// An adapter object
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.select_dialog_item, options);
AutoCompleteTextView autoCompleteTextView = (AutoCompleteTextView)findViewById(R.id.autoCompleteTextView);
autoCompleteTextView.setAdapter(adapter);
autoCompleteTextView.setThreshold(1);
// Set the listeners
autoCompleteTextView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Log.d("OnItemClick", "[AutoCompleteTextView] Item clicked");
}
});
autoCompleteTextView.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
Log.d("onItemSelected", "[AutoCompleteTextView] Item selected");
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
Log.d("onNothingSelected", "[AutoCompleteTextView] Nothing here");
}
});
}
}
bạn đã cố gắng sử dụng bàn phím phần cứng trên trình giả lập chưa? –
@GeetChoubey Tôi đã sử dụng bàn phím bluetooth thực tế và kết nối nó với điện thoại Android, trên đó tôi đã triển khai ứng dụng này – Rakesh