- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我在spinnerRanger.setSelection之后写了Spinner的事件setOnItemSelectedListener。
我觉得第一次运行APP时,Toast.makeText(...)
不会启动,但还是有提示信息,为什么?
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.cleanup_delete_fragment_old, container, false);
mView = rootView;
mContext = rootView.getContext();
InitValueOfControls();
return rootView;
}
private void InitValueOfControls() {
spinnerRanger = (Spinner)mView.findViewById(R.id.spinner);
PublicParFun.FillRangeSpinner(mView, spinnerRanger);
spinnerRanger.setSelection(PublicParFun.GetIndexOfRangeDeleteOld(mContext));
spinnerRanger.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
Toast.makeText(mContext, "My "+position, Toast.LENGTH_LONG).show();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
}
特雷弗·卡罗瑟斯:
如果我在 Selection 监听器事件之前插入一个 DoLongTimeOperation()
,它还会显示 toast 吗?
private void InitValueOfControls() {
spinnerRanger = (Spinner)mView.findViewById(R.id.spinner);
PublicParFun.FillRangeSpinner(mView, spinnerRanger);
spinnerRanger.setSelection(PublicParFun.GetIndexOfRangeDeleteOld(mContext));
DoLongTimeOperation();
spinnerRanger.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
Toast.makeText(mContext, "My " + position, Toast.LENGTH_LONG).show();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
}
代码A:
private void InitValueOfControls() {
spinnerRanger = (Spinner)mView.findViewById(R.id.spinner);
PublicParFun.FillRangeSpinner(mView, spinnerRanger);
spinnerRanger.setSelection(PublicParFun.GetIndexOfRangeDeleteOld(mContext));
DoLongTimeOperation();
spinnerRanger.post(new Runnable() {
@Override
public void run() {
spinnerRanger.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
Toast.makeText(mContext, "My "+position, Toast.LENGTH_LONG).show();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
}
});
}
代码 B
private void InitValueOfControls() {
spinnerRanger = (Spinner)mView.findViewById(R.id.spinner);
PublicParFun.FillRangeSpinner(mView, spinnerRanger);
spinnerRanger.setSelection(PublicParFun.GetIndexOfRangeDeleteOld(mContext));
spinnerRanger.post(new Runnable() {
@Override
public void run() {
spinnerRanger.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
// ...
}
}
});
}
代码 C
private void InitValueOfControls() {
spinnerRanger = (Spinner)mView.findViewById(R.id.spinner);
PublicParFun.FillRangeSpinner(mView, spinnerRanger);
spinnerRanger.setSelection(PublicParFun.GetIndexOfRangeDeleteOld(mContext));
spinnerRanger.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
// ...
});
}
最佳答案
我只是用我自己的基本 ArrayAdapter 运行这段代码,它在创建 View 并在设置监听器之前调用 setSelection() 时立即显示 toast(如上所示)。
这绝对是不直观的,因为您是在设置选择之后设置监听器。深入了解它的唯一方法是深入研究源代码。在四处翻找之后,我发现他们正在发布 this Runnable到主线程以通知选择更改的监听器。这是事件的顺序:
发布一个 Runnable 来设置您的选择监听器,以便它在第一次传递的 SelectionNotifier 之后得到处理:
private void InitValueOfControls()
{
spinnerRanger=(Spinner)mView.findViewById(R.id.spinner);
PublicParFun.FillRangeSpinner(mView, spinnerRanger);
spinnerRanger.setSelection(PublicParFun.GetIndexOfRangeDeleteOld(mContext));
spinnerRanger.post(new Runnable() {
@Override
public void run() {
spinnerRanger.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {...}
}
});
}
新的事件顺序是:
关于android - 为什么Spinner控件在setSelection之后事件setOnItemSelectedListener仍然显示提示信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31471770/
我读了文档,但不太明白...参数“animate”有什么用? 我唯一注意到的事情: public void onItemSelected(AdapterView parent, View view,
我想在点击时更改按钮的图像。我在应用程序中有一个问题,应用程序用户以"is"和“否”的格式给出了答案。为此,我拍摄了两个带有复选框空图像的按钮。我想更改按钮的图像在 checkbox_fill 如果它
还有其他人遇到过这个问题吗?如果您以编程方式将 UITableViewCell 的选定状态设置为 YES,则会将文本标签着色为黑色? [单元格集选择:是] 我似乎无法弄清楚这一点。我希望它能突出显示单
我想保持一个单元格处于选中状态,并且仅在选择另一个单元格时才更改。在 tableView:cellForRowAtIndexPath: 我已经使用 [cell setSelected:YES] 设置了
应该给出什么类型的值.setSelectedButton才能在RadioButtonGroup构造中选择特定的Button。 我尝试过的: sap.ui.getCore().byId("RadioBu
我有一个带有2个背景图片的自定义UIButton: in Default State: default.png in Selected State: selected.png 在Xib文件中设置。 这
我有一个包含文本项目的图库。我可以使用 UI 或使用 setSelection(position) 以编程方式更改所选项目。但是,当我调用此方法时,有时项目背景不会更改为选定状态。我注意到,如果 se
我想通过单击另一个切换按钮来更改切换按钮的状态。我的代码不是那样工作的。该部分有问题: private void jToggleButton12ActionPerformed(java.awt.eve
我有一个 JFrame 表单,其中包含标签、文本字段、组合框和包含 2 个单选按钮的按钮组。在另一个表单中,我有一个 JTable,其中填充了有关学生的数据(学生 ID、姓名...),当我从表中选择一
我在我的网络应用程序中使用jCrop插件。但是,我试图预选图像上的一个区域,但这根本不起作用,并且没有预选任何区域。 这是我的代码: $('.position').live('click', func
我正在尝试加载我的首选项并更新微调器以显示之前保存的值。我以前从未使用过 spinner.setSelection 并不断收到 nullpointerexceptions。 String[] time
我正在为 GridView 使用 StickyGridHeader 库。我想根据应在 View 中显示的项目将 gridview 滚动到特定位置。 我已经尝试将 setSelection 用于我希望使
类(class) build protected Spinner tipSpinner; private ArrayAdapter adapterTip; 在 setContentView(R.lay
我有一个 ListView ,每当更新列表时,我都会强制滚动到列表底部。但是,在滚动到列表底部后,出于某种原因, ListView 会固定在该点,用户无法在列表上来回滚动以查看其他数据。 问题:在 s
我无法使用微调器 setSelection() 方法解决问题。我正在编写一个程序来保存数据库中的某种表中的数据。当用户打开一个程序时,它从数据库加载数据并添加 3 个空的“表”行,以便用户可以填充并保
我正在对话框中制作一个选择列表。 我已经完成了所有基本功能,比如添加了一个 setonitemclicklistener,但我想要的是默认设置列表的第一项,但是当我使用 setSelection(1)
我希望以编程方式使菜单上的特定项目被选中并显示,以便在按下 Enter 时执行相应的操作。不幸的是,我发现 JMenuItem.setSelected() 和 JPopupMenu.setSelect
我在应用程序中遇到了一个非常奇怪的崩溃。堆栈跟踪: java.lang.IndexOutOfBoundsException: charAt: -1 < 0 at android.text.Spanna
我有一个 ListActivity,它实现 onListItemClick() 并调用该类的 doSomething() 函数。后者包含 l.setSelection(position),其中 l 是
当匹配的编辑器被激活时,我试图选择一个树节点。 这是代码: private void selectNodeInTree(IEditorPart activatedEditor) { IEdito
我是一名优秀的程序员,十分优秀!