Android - 如何判断有人按下了 SPINNER 但没有更改其中的可见项目

标签 android listview focus spinner try-catch

我有一个微调器,大部分都可以使用。如果用户选择其中的一项,“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/

相关文章:

java - 访问 fragment 中声明的微调器

android - 如何根据平板电脑的方向定位布局

android - 滚动 ListView 时选定的项目问题

android - 突出显示 ListView 项目中的搜索文本

jquery - 为什么 $ (":select").focus 不起作用,而 $ (":input").focus 起作用?

android - 区分最小化和旋转生命周期事件

java - 如何在 Java 中将 L 附加到 long

android - 如何从android ListView 中获取值?

html - CSS3 - 使用 :focus issue 显示工具提示

java - 如何在 JOptionPane.showConfirmDialog 的组件上请求焦点?