带有AutoCompleteTextView的getText

时间:2017-07-18 02:07:44

标签: java android autocomplete

当我仍然使用EditText时代码会恢复,但我将其更改为AutoCompleteTextView以使用户更容易,现在我遇到了问题。以下是大部分代码:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main2);

    AutoCompleteTextView edit = (AutoCompleteTextView) findViewById(R.id.et_item);

    String[] items = getResources().getStringArray(R.array.items_array);
    java.util.Arrays.sort(items);
    ArrayAdapter<String> adapter =
            new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, items);
    edit.setAdapter(adapter);

public void find(View view) {

    String name = edit.getText().toString();

    if(name.equalsIgnoreCase("Brown Turkey Fig")){
        Intent intent = new Intent(this, BrownTurkeyFig.class);
        startActivity(intent);
    }
    else if(name.equalsIgnoreCase("Emerald Green Arborvitae")){
        Intent intent = new Intent(this, EmeraldGreenArborvitae.class);
        startActivity(intent);
    }
    else if(name.equalsIgnoreCase("Delaware Valley White Azalea")){
        Intent intent = new Intent(this, DelawareValleyWhiteAzalea.class);
        startActivity(intent);
    }

我已经包含了与问题相关的部分。基本上,用户在AutoCompleteTextView中键入工厂的名称,然后单击按钮以根据他们输入的任何工厂将其带到新活动(最后我包括三个示例)。在我添加自动填充部件之前,代码工作正常。

问题在于,单击该按钮时,不会启动下一个活动。它崩溃了应用程序。

我现在不知道它有什么问题。也许我没有正确地从AutoCompleteTextView中获取实际文本以在if语句中进行比较?任何帮助表示赞赏!

2 个答案:

答案 0 :(得分:0)

对不起,我无法理解你的意思是什么。也许你可以尝试使用AutoCompleteTextView.setOnItemClickListener。例如:

edit.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                String item = items.get(position);
                 if(item.equalsIgnoreCase("Brown Turkey Fig")){
                   Intent intent = new Intent(this, BrownTurkeyFig.class);
                   startActivity(intent);
                 } else if(item.equalsIgnoreCase("Emerald GreenArborvitae"){
                    Intent intent = new 
                               Intent(this,EmeraldGreenArborvitae.class);
                     startActivity(intent);
                 } else if(item.equalsIgnoreCase("Delaware Valley White Azalea")){
                     Intent intent = new Intent(this, DelawareValleyWhiteAzalea.class);
                     startActivity(intent);
} 
            }
        })

希望能帮到你。

答案 1 :(得分:0)

您在oncreate方法中声明了一个局部变量“edit”,但您在“find”方法中也使用了一个全局变量。