我有一个微调器,大部分都可以使用。如果用户选择其中的一项,“onItemSelected”例程会很好地捕获它。
但是,如果用户单击同一个微调器,但它当前显示的已经可见的项目没有发生变化,“onItemSelected”例程就会忽略它,并且日志显示:-
WARN/InputManagerService(577):窗口已获得焦点,忽略以下焦点获得:com.android.internal.view.IInputMethodClient$Stub$Proxy@437948b0
反正我是来抓捕做这件事的人?这个想法是我的微调器包含一个名称列表,当用户从微调器中选择一个名称时,它会被添加到 ListView 中。
我可以只添加另一个按钮以从微调器中获取名称,但是屏幕空间已经不足,我不想再添加任何内容。
最佳答案
这个问题可以通过覆盖 Spinner.onClick()
来解决,但这是 android 3.0 及更高版本的错误 (Spinner.onClick()
is called on 2.2 device, not called on 3.0 device)。
所以最好的解决方案是像@adamp 所说的AlertDialog.Builder
。
AlertDialog.Builder builder = new Builder(this);
// maybe get from resources
CharSequence titles[] = getResources().getTextArray(R.array.titles);
builder.setItems(titles, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// add your code here
}
});
builder.create().show();
关于Android - 如何判断有人按下了 SPINNER 但没有更改其中的可见项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2984040/