自动完成文本在android片段中不起作用

时间:2018-01-20 08:43:12

标签: android android-fragments

我想在我的应用程序中设置自动填充文本。建议值将从数据库中获取。但是对于试验,我为建议值做了一个字符串数组。当我在一个活动上实现它但没有在片段中工作时,它工作正常。

代替getActivity函数我试过:
1)getContext()
2)this.getActivity()
3)(Search_Bus)getActivity()

但没有工作...... 它给了我错误:

  

尝试在空对象引用上调用虚方法

这是我的代码......

public class Bus_Schedule_tab3 extends Fragment {

AutoCompleteTextView autoCompleteTextView;
ArrayList<String> array;
ArrayAdapter<String> adapter;
String[] stop_names;

    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    View rootView = inflater.inflate(R.layout.bus_schedule_tab3, container, false);

    stop_names  = new String[] {"usa","china","russia","bangladesh"};

    autoCompleteTextView = (AutoCompleteTextView)rootView.findViewById(R.id.autoCompleteTextView2);
    adapter = new ArrayAdapter<String>(getActivity(),R.layout.support_simple_spinner_dropdown_item,stop_names);
    autoCompleteTextView.setAdapter(adapter);

    return rootView;
}

2 个答案:

答案 0 :(得分:1)

它为我工作......你错过了设定门槛

AutoCompleteTextView autoCompleteTextView;
ArrayAdapter<String> adapter;
String[] stop_names;

public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    View rootView = inflater.inflate(R.layout.fragment_test, container, false);


    stop_names = new String[]{"usa", "china", "russia", "bangladesh"};

    autoCompleteTextView = rootView.findViewById(R.id.autoCompleteTextView2);
    adapter = new ArrayAdapter<>(getActivity(), R.layout.support_simple_spinner_dropdown_item, stop_names);
    autoCompleteTextView.setThreshold(1);
    autoCompleteTextView.setAdapter(adapter);


    return rootView;
}

答案 1 :(得分:0)

在您的xml文件中设置android:completionThreshold。

<AutoCompleteTextView
                android:id="@+id/id"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:completionThreshold="1"
                android:layout_weight="1"/>