整个故事是这样的,后台我在单独的线程上运行一个进程。当进程完成时,我调用主Activity中的Handler,并根据结果执行某些任务。在此时,如果用户已经打开下拉列表,我想关闭它。
下拉列表在main.xml布局中。
<Spinner android:id="@+id/birthPlaceSpinner" android:layout_weight="1"
android:layout_height="wrap_content" android:prompt="@string/select"
android:layout_width="fill_parent" />
这是处理程序:
private class BirthplaceChangedHandler extends Handler {
@Override
public void handleMessage(Message msg) {
String placeFilterStr = birthPlaceFilterText.getText().toString();
if ("".equals(placeFilterStr) || placeFilterStr == null || validNewAddresses.isEmpty()) {
birthPlaceSpinner.setEnabled(false);
hideGeoLocationInformation();
} else {
birthPlaceSpinner.setEnabled(true);
}
adapter = new ArrayAdapter<String>(getApplicationContext(), R.layout.multiline_spinner_dropdown_item, validNewAddressesStr)
birthPlaceSpinner.setAdapter(adapter);
}
}
干杯!
Spinner.onDetachedFromWindow
,将其公开并手动调用是我找到的唯一可行的方法。我遵循了http://stackoverflow.com/a/21122845/369317的建议。 - Denys Kniazhev-Support Ukraine