片段上的AutoCompleteTextView没有建议

时间:2016-11-27 21:03:18

标签: android android-fragments autocompletetextview

我尝试将以下代码实现到片段中。当然,我做了所有必要的更改,以避免语法和其他错误。

public class MainActivity extends ActionBarActivity {

private AutoCompleteTextView autoCompleteTextView;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

autoCompleteTextView = (AutoCompleteTextView)findViewById(R.id.autoCompleteTextView);

String[]dataStorage = {"Nigeria", "Ghana", "Mali", "South Africa", "Cameroon", "Niger", "Algeria", "Zimbabwe"};

ArrayAdapter adapter = new ArrayAdapter(getApplicationContext(), android.R.layout.select_dialog_item, dataStorage);

autoCompleteTextView.setThreshold(2);

autoCompleteTextView.setAdapter(adapter);

}

@Override

public boolean onCreateOptionsMenu(Menu menu) {

// Inflate the menu; this adds items to the action bar if it is present.

getMenuInflater().inflate(R.menu.menu_main, menu);

return true;

}

@Override

public boolean onOptionsItemSelected(MenuItem item) {

// Handle action bar item clicks here. The action bar will

// automatically handle clicks on the Home/Up button, so long

// as you specify a parent activity in AndroidManifest.xml.

int id = item.getItemId();

//noinspection SimplifiableIfStatement

if (id == R.id.action_settings) {

return true;

}

return super.onOptionsItemSelected(item);

}
}

它正在运行,没有任何错误,但我没有得到第一个字符后的搜索建议。首先,屏幕键盘在全视图模式下打开,并带有一个名为Submit的按钮。我无法得到任何建议,或者因为这款全屏键盘而无法看到它。

2 个答案:

答案 0 :(得分:1)

如果问题只是隐藏搜索建议的全屏键盘,您可以通过设置flagNoExtractUi选项来禁用全屏键盘:

<AutoCompleteTextView
    android:id="@+id/autoCompleteTextView"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:imeOptions="flagNoExtractUi" />

除此之外,您的代码很好,AutoCompleteTextView应该可以正常工作。

答案 1 :(得分:1)

来自文档:

   setThreshold(int threshold)

指定在显示下拉列表之前用户必须在编辑框中键入的最小字符数。

您将阈值设置为2个字符然后进行预测。此外,提供给适配器的测试数据列表非常独特

尝试将阈值设置为0,然后重试

您还应该指定数组适配器的类型:

    ArrayAdapter<String> adapter = new ArrayAdapter<String>(getApplicationContext(),android.R.layout.select_dialog_item, dataStorage);