3

我有一个微调器,它主要工作。如果用户选择其中一项,“onItemSelected”例程会很好地捕捉到它。

但是,如果用户单击相同的微调器,但没有从它当前显示的已经可见的项目更改,则“onItemSelected”例程将忽略它,并且日志显示:-

WARN/InputManagerService(577):窗口已经聚焦,忽略焦点增益:com.android.internal.view.IInputMethodClient$Stub$Proxy@437948b0

反正我在那里捕捉有人这样做?这个想法是我的微调器包含一个名称列表,当用户从微调器中选择一个时,它会被添加到列表视图中。

我可以添加另一个按钮来从微调器中获取名称,但是,屏幕空间已经不足,我宁愿不再添加内容。

4

4 回答 4

2

这个问题可以通过覆盖来解决Spinner.onClick(),但这是 android 3.0 及更高版本的错误(Spinner.onClick()在 2.2 设备上调用,而不是在 3.0 设备上调用)。

所以最好的解决方案是AlertDialog.Builder@adamp 所说的。

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();
于 2012-09-12T17:54:46.317 回答
1

听起来您实际上并不想要 Spinner,您只是将它用于弹出对话框。您可以创建自己的简单弹出对话框,如 Spinner 使用的(也许是在您的 UI 中单击“添加”按钮的结果?),方法是使用AlertDialog.Builder. Spinner 使用setSingleChoiceItems后跟showonAlertDialog.Builder向用户展示其选择。

于 2010-06-06T22:30:28.993 回答
0

从未使用过微调器,但不能在 onItemSelected 例程中重置微调器位置吗?对于某种说“请选择”或其他内容的空值。

于 2010-06-06T13:57:08.407 回答
0

你看过setOnItemClickListener吗?如果您实现自己的AdapterView.OnItemClickListener并将其作为参数传递给mySpinner.setOnItemClickListener方法,您将能够获得onItemClick方法内所选项目的位置

于 2010-06-06T20:39:56.367 回答