【问题标题】:Android fragment Autocomplete text view does not executes setOnItemClickListenerAndroid片段自动完成文本视图不执行setOnItemClickListener
【发布时间】:2021-02-12 10:59:09
【问题描述】:

我有一个片段选项卡布局。在第一个选项卡片段中,我有几个自动完成文本视图。这些自动完成文本视图引入了数据异步方式。我的问题是第一个自动完成文本视图不会触发 setOnItemClickListener 回调,而其他两个自动完成工作正常。 我尝试将单个自动完成从 onCreateView 移动到 onViewCreated。 我删除了文本观察器并尝试了,但到目前为止没有任何效果。

toEditAutocompleteText = (AutoCompleteTextView)view.findViewById(R.id.toEditAutocompleteText );
toEditAutocompleteText.setOnItemClickListener(onBranchSelected);
toEditAutocompleteText.addTextChangedListener(new TextWatcher() {

            public void afterTextChanged(Editable s) {

            }

            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
                /*if (globalPreventTextWatcher == true) {
                    return;
                }*/

            }

            public void onTextChanged(CharSequence s, int start, int before, int count) {

                if (s.toString().length() >= 1 && toEditText.hasFocus()) {
                    //
                    // System.out.println("branch----------------------->"+s.toString());
                    searchBranch(s.toString());
                }

            }
        });

就像上面的自动完成文本一样,我还有一个自动完成文本。这些都可以正常工作,但是有一个像这样不会触发回调。 这三者之间的唯一区别是获取数据调用的异步函数不同,因为它们返回不同的对象数组。

具有自动完成文本视图的选项卡之一。

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@color/lightGray"
    android:fillViewport="true">

    <RelativeLayout 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:id="@+id/activity_update_delivery_record"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:paddingBottom="@dimen/activity_vertical_margin"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin">

        <TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
            android:id="@+id/main_table"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_centerInParent="true"
            android:stretchColumns="1">

            <TableRow>
                <!-- Column 1 -->
                <EditText
                    android:id="@+id/docketNumberEditText"
                    android:layout_width="0dip"
                    android:layout_height="wrap_content"
                    android:layout_margin="4dip"
                    android:layout_weight="1"
                    android:background="@drawable/rounded_bg"
                    android:completionThreshold="1"
                    android:hint="docket number"
                    android:maxLines="1"
                    android:gravity="center"
                    android:padding="10dip" />

                <!-- Column 2 -->
                <!--<TextView-->
                <!--android:id="@+id/tbl_txt2"-->
                <!--android:layout_width="0dip"-->
                <!--android:layout_height="wrap_content"-->
                <!--android:background="@color/red"-->
                <!--android:textColor="@color/white"-->
                <!--android:padding="10dip"-->
                <!--android:layout_margin="4dip"-->
                <!--android:layout_weight="1"-->
                <!--android:text="Column 2" />-->

                <!--&lt;!&ndash; Column 3 &ndash;&gt;-->
                <!--<TextView-->
                <!--android:id="@+id/tbl_txt3"-->
                <!--android:layout_width="0dip"-->
                <!--android:layout_height="wrap_content"-->
                <!--android:background="@color/red"-->
                <!--android:textColor="@color/white"-->
                <!--android:padding="10dip"-->
                <!--android:layout_margin="4dip"-->
                <!--android:layout_weight="1"-->
                <!--android:text="Column 3" />-->
            </TableRow>

            <TableRow>

                <TextView
                    android:id="@+id/fromValue"
                    android:layout_width="0dp"
                    android:layout_marginTop="10dp"
                    android:layout_weight="1"
                    android:gravity="center"
                    android:text="From Branch"
                    android:textSize="18dp"
                    android:textStyle="bold" />
            </TableRow>

            <TableRow>

                <AutoCompleteTextView
                    android:id="@+id/consignor"
                    android:layout_width="0dp"
                    android:layout_marginTop="10dp"
                    android:layout_weight="1"
                    android:background="@drawable/rounded_bg"
                    android:completionThreshold="1"
                    android:gravity="center"
                    android:hint="Consignor"
                    android:inputType="textPersonName"
                    android:nextFocusDown="@+id/consignee"
                    android:textColor="@android:color/black"
                    android:textSize="18dp"
                    android:textStyle="bold" />
            </TableRow>

            <TableRow>

                <AutoCompleteTextView
                    android:id="@+id/consignee"
                    android:layout_width="0dp"
                    android:layout_marginTop="10dp"
                    android:layout_weight="1"
                    android:background="@drawable/rounded_bg"
                    android:completionThreshold="1"
                    android:gravity="center"
                    android:hint="Consignee"
                    android:inputType="textPersonName"
                    android:nextFocusDown="@+id/bookingLocation"
                    android:textColor="@android:color/black"
                    android:textSize="18dp"
                    android:textStyle="bold" />
            </TableRow>

            <TableRow>

                <AutoCompleteTextView
                    android:id="@+id/bookingLocation"
                    android:completionThreshold="1"
                    android:layout_width="0dp"
                    android:layout_marginTop="10dp"
                    android:layout_weight="1"
                    android:background="@drawable/rounded_bg"
                    android:gravity="center"
                    android:hint="Booking location"
                    android:textStyle="bold"
                    android:inputType="textPersonName"
                    android:nextFocusDown="@+id/toEditText"
                    android:textColor="@android:color/black"
                    android:textSize="18dp" />
            </TableRow>


            <TableRow>

                <AutoCompleteTextView
                    android:id="@+id/toEditText"
                    android:layout_width="0dp"
                    android:layout_marginTop="10dp"
                    android:layout_weight="1"
                    android:background="@drawable/rounded_bg"
                    android:completionThreshold="1"
                    android:gravity="center"
                    android:hint="To City"
                    android:inputType="textPersonName"
                    android:nextFocusDown="@+id/invoice"
                    android:textColor="@android:color/black"
                    android:textSize="18dp"
                    android:textStyle="bold" />
            </TableRow>

            <TableRow>

                <EditText
                    android:id="@+id/invoice"
                    android:layout_width="0dp"


                    android:layout_margin="10dip"
                    android:layout_weight="1"
                    android:background="@drawable/rounded_bg"
                    android:gravity="center"
                    android:hint="Invoice"
                    android:inputType="text"
                    android:maxLength="50"
                    android:nextFocusDown="@+id/weight"
                    android:textColor="@android:color/black"
                    android:textSize="18dp" />

                <EditText
                    android:id="@+id/weight"
                    android:layout_width="0dp"


                    android:layout_margin="10dip"
                    android:layout_weight="1"
                    android:background="@drawable/rounded_bg"
                    android:gravity="center"
                    android:hint="Weight"
                    android:inputType="number"
                    android:maxLength="6"
                    android:textColor="@android:color/black"
                    android:textSize="18dp" />

                <EditText
                    android:id="@+id/quantity"
                    android:layout_width="0dp"


                    android:layout_margin="10dip"
                    android:layout_weight="1"
                    android:background="@drawable/rounded_bg"
                    android:gravity="center"
                    android:hint="Quantity"
                    android:inputType="number"
                    android:maxLength="6"
                    android:nextFocusDown="@+id/invoice"
                    android:textColor="@android:color/black"
                    android:textSize="18dp" />
            </TableRow>

            <TableRow>

                <AutoCompleteTextView
                    android:id="@+id/truckNumberAutocomplete"
                    android:layout_width="0dp"
                    android:layout_marginTop="10dp"
                    android:layout_weight="1"
                    android:background="@drawable/rounded_bg"
                    android:completionThreshold="1"
                    android:gravity="center"
                    android:hint="Truck number"
                    android:inputType="textPersonName"
                    android:nextFocusDown="@+id/invoice"
                    android:textColor="@android:color/black"
                    android:textSize="18dp"
                    android:textStyle="bold" />
            </TableRow>

            <TableRow>

                <Spinner
                    android:id="@+id/modeSpinner"
                    android:layout_width="0dp"
                    android:layout_height="45dp"
                    android:layout_marginTop="10dp"
                    android:layout_weight="1"
                    android:hint="Mode"
                    android:textSize="18dp" />
            </TableRow>

            <TableRow>

                <ImageButton
                    android:id="@+id/clearInput"
                    android:layout_width="40dp"
                    android:layout_height="40dp"
                    android:padding="35dip"
                    android:layout_margin="35dp"
                    android:background="@drawable/circle_button_layout"
                    android:clickable="true"
                    android:src="@android:drawable/ic_menu_close_clear_cancel" />

                <ImageButton
                    android:layout_width="wrap_content"
                    android:visibility="gone" />
                <ImageButton
                    android:id="@+id/print"
                    android:padding="35dip"
                    android:layout_margin="35dp"
                    android:layout_width="40dp"
                    android:layout_height="40dp"
                    android:gravity="center"
                    android:background="@drawable/circle_button_layout"
                    android:clickable="true"
                    android:src="@mipmap/ic_print_icon" />

                <ImageButton
                    android:layout_width="40dp"
                    android:layout_height="40dp"
                    android:padding="35dip"
                    android:layout_margin="35dp"
                    android:clickable="true"
                    android:background="@drawable/circle_button_layout"
                    android:src="@android:drawable/ic_menu_add"
                    android:id="@+id/fabButton"/>
            </TableRow>
        </TableLayout>





    </RelativeLayout>
</ScrollView>

主要片段持有者

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <android.support.design.widget.AppBarLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">

        <!--<android.support.v7.widget.Toolbar-->
        <!--android:id="@+id/toolbar"-->
        <!--android:layout_width="match_parent"-->
        <!--android:layout_height="?attr/actionBarSize"-->
        <!--android:background="?attr/colorPrimary"-->
        <!--app:layout_scrollFlags="scroll|enterAlways"-->
        <!--app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />-->

        <android.support.design.widget.TabLayout
            android:id="@+id/tabs"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:tabMode="fixed"
            app:tabGravity="fill"/>
    </android.support.design.widget.AppBarLayout>

    <android.support.v4.view.ViewPager
        android:id="@+id/viewpager"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_behavior="@string/appbar_scrolling_view_behavior"  />
</android.support.design.widget.CoordinatorLayout>

已经为此花费了几个小时。报告没有错误。自动完成功能适用于数据获取部分,但是当您从列表中选择某些内容时,不会在项目选择回调上触发一个自动完成功能。

此外,这个特定的自动完成文本观察器也不会被触发,但会调用异步回调函数。 这让我更加困惑。

谁能指出可能出了什么问题。

【问题讨论】:

    标签: java android android-fragments autocomplete


    【解决方案1】:

    我发现了问题。显然我的代码中还有另外两个自动完成文本视图。这些自动完成应该通过 api 填充值。 API 没有返回任何数据,并且它们没有被填充。这些非常自动完成的还有一个 hasFocus 监听器。填充前两个自动完成功能的那一刻,我的代码开始按原样工作。似乎前两个自动完成的 hasFocus 搞砸了第三个自动完成。 因此,如果您遇到问题,请检查您是否在任何元素上应用了焦点侦听器。如果是,请将其删除,然后您将被排序。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多