如何在选定的textView中设置文本

时间:2017-09-24 21:06:33

标签: java android

这里需要一些帮助。在我的地图测试应用程序中,我有2个自动完成文本视图。第一个textView在加载时获取标记的地址,并在拖动地图时搜索地址。

但我正在努力争取第二个textView,我需要相同的功能,具体取决于textView的活动状态。

我尝试过:

private AutoCompleteTextView mFromAddress;
private AutoCompleteTextView mToAddress;

mFromAddress = (AutoCompleteTextView) findViewById(R.id.fromAddress);
mToAddress = (AutoCompleteTextView) findViewById(R.id.toAddress);

// Decoder Coding.. str prints address
if (mFromAddress.isSelected()) {
    mFromAddress.setText(str);
} else if (mToAddress.isSelected()) {
    mToAddress.setText(str);
}

但没有预期的结果。即使第一个textView也停止工作。

我是java和Android Studio的新手。我在这里寻找一些建议。

1 个答案:

答案 0 :(得分:1)

尝试hasFocus()功能

if (mFromAddress.hasFocus()) {
    mFromAddress.setText(str);
} else if (mToAddress.hasFocus()) {
    mToAddress.setText(str);
}

另一种方法是在代码中定义另一个TextView,并在TextView

中进行焦点更改时将其设置为有效OnFocusChangeListener
AutoCompleteTextView activeET;
activeET = mFromAddress;  // set mFromAddress as active text in start

mFromAddress.setOnFocusChangeListener(new View.OnFocusChangeListener() {
    @Override
    public void onFocusChange(View view, boolean hasFocus) {
        if(hasFocus)
            activeET = mFromAddress;
    }
});

mToAddress.setOnFocusChangeListener(new View.OnFocusChangeListener() {
    @Override
    public void onFocusChange(View view, boolean hasFocus) {
        if(hasFocus)
            activeET = mToAddress;
    }
});

现在您只需要将文字设置为activeET

activeET.setText(str);