繁体   English   中英

AutoCompleteTextView单击侦听器无法正常工作

[英]AutoCompleteTextView click listener is not working perfectly

我正在创建一个Android应用程序,我正在使用AutoCompleteTextView并尝试设置onClickListener以重置单击AutoCompleteTextView输入的值。

问题是我有两个AutoCompleteTextView所以当我在第一个AutoCompleteTextView输入文本然后第二个AutoCompleteTextView然后单击第一个AutoCompleteTextView然后它没有在第一个AutoCompleteTextView上调用OnClickListener

知道为什么这样表现得如此奇怪吗?

<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>

ClickListener上AutoCompleteTextView

// 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();
    }
});

提前致谢。

帮助@Williams的链接是: onClick事件没有触发| Android 也在上面的评论中发布。 我很高兴你找到了解决方案!

当用户与UI元素交互时,将以自上而下的顺序调用各种侦听器。 (例如:OnTouch - > OnFocusChange - > OnClick。)如果已定义了一个侦听器(使用setOn ... Listener)并且它使用此事件:将不会调用较低优先级的侦听器。 就其本质而言,当您第一次触摸EditText时,它会使用OnFocusChangeListener接收焦点,以便用户可以键入。 此处消耗的操作因此不会调用OnClick。 每次连续触摸都不会改变焦点,因此事件会逐渐变为OnClickListener。

您需要使用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();
        }
    });

您是否已在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"
};

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM