我正在创建一个Android应用程序,我正在使用AutoCompleteTextView
并尝试设置onClickListener以在点击AutoCompleteTextView
时重置输入的值。
问题是我有两个AutoCompleteTextView
所以当我在第一个AutoCompleteTextView
输入文本然后第二个AutoCompleteTextView
然后点击第一个AutoCompleteTextView
然后它没有调用OnClickListener时第一个AutoCompleteTextView
知道为什么这会表现得如此奇怪吗?
<AutoCompleteTextView
android:id="@+id/fromStationEdit"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/TextView1"
android:layout_marginLeft="12dp"
android:layout_marginTop="3dp"
android:background="@drawable/apptheme_edit_text_holo_light"
android:drawableRight="@drawable/ic_rail"
android:focusable="true"
android:focusableInTouchMode="true"
android:imeOptions="actionNext"
android:paddingLeft="8dp"
android:singleLine="true"
android:textColor="@color/black"
android:textColorHighlight="@android:color/black"
android:textCursorDrawable="@null"
android:textSize="16sp" >
<requestFocus />
</AutoCompleteTextView>
AutoCompleteTextView
上的ClickListener。
// reset the value when user click on this view
source_stn_txt.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
source_stn_txt.setText("");
}
});
// reset the value when user click on this view
dest_stn_txt.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
dest_stn_txt.setText("");
}
});
source_stn_txt.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
source = source_stn_txt.getText().toString().trim();
dest_stn_txt.requestFocus();
}
});
提前致谢。
答案 0 :(得分:2)
帮助@Williams的链接是:onClick event is not triggering | Android。也在上面的评论中发布。我很高兴你找到了解决方案!
当用户与UI元素交互时,将以自上而下的顺序调用各种侦听器。 (例如:OnTouch - &gt; OnFocusChange - &gt; OnClick。)如果已定义了一个侦听器(使用setOn ... Listener)并且它使用此事件:将不会调用较低优先级的侦听器。就其本质而言,当您第一次触摸EditText时,它会使用OnFocusChangeListener接收焦点,以便用户可以键入。此处消耗的操作因此不会调用OnClick。每次连续触摸都不会改变焦点,因此事件会逐渐变为OnClickListener。
答案 1 :(得分:1)
您需要使用AdapterView.OnItemClickListener()而不是OnClickListener
。
AutoCompleteTextView actv = (AutoCompleteTextView) findViewById(R.id.fromStationEdit);
String[] values = new String[] { "Android", "iPhone", "WindowsMobile",
"Blackberry", "WebOS", "Ubuntu", "Windows7", "Max OS X",
"Linux", "OS/2", "Ubuntu"};
ArrayList<String> list = new ArrayList<String>();
for (int i = 0; i < values.length; ++i) {
list.add(values[i]);
}
final ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, list);
actv.setAdapter(adapter);
actv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
Toast.makeText(MainActivity.this,
adapter.getItem(position).toString(),
Toast.LENGTH_SHORT).show();
}
});
答案 2 :(得分:0)
您是否已在Strings.xml中声明要完成的项目。如果没有,请执行以下操作:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">AutoComplete</string>
<string name="action_settings">Settings</string>
<string name="hello_world">Hello world!</string>
<string name="auto_complete">AutoComplete</string>
<string name="multi_auto_complete">Multi AutoComplete</string>
<string-array name="list_of_countries">
<item >USA</item>
<item >Uk</item>
<item >Canada</item>
<item >Australia</item>
<item >France</item>
<item >Italy</item>
<item >China</item>
<item >Japan</item>
<item >Spain</item>
</string-array>
</resources>
或在您的班级中声明活动:
AutoCompleteTextView myAutoComplete;
String item[]={
"January", "February", "March", "April",
"May", "June", "July", "August",
"September", "October", "November", "December"
};