如何保持onItemSelected从一个新近实例微调发射了? [英] How to keep onItemSelected from firing off on a newly instantiated Spinner?
问题描述
我已经想到了一些不足优雅的解决这个办法,但我知道我一定是失去了一些东西。
我的onItemSelected火灾,立即而不与用户的交互,这是意外的行为。我希望为用户界面,以等待用户选择的东西它才作罢。
我甚至尝试设置在onResume听众,希望会有所帮助,但事实并非如此。
我如何从用户之前发射了可触摸控制停止?
公共类CMSHome延伸活动{
私人微调微调;
@覆盖
公共无效的onCreate(包savedInstanceState){
super.onCreate(savedInstanceState);
的setContentView(R.layout.main);
//这是我的微调///////////////////////////////////////////
微调=(微调)findViewById(R.id.spinner);
ArrayAdapter< CharSequence的>适配器= ArrayAdapter.createFromResource(
对此,R.array.pm_list,android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(适配器);
};
公共无效onResume(){
super.onResume();
spinner.setOnItemSelectedListener(新MyOnItemSelectedListener());
}
公共类MyOnItemSelectedListener实现OnItemSelectedListener {
公共无效onItemSelected(适配器视图<>父,
视图中查看,INT POS,长ID){
意图I =新的意图(CMSHome.this,ListProjects.class);
i.putExtra(bEmpID,parent.getItemAtPosition(POS)的ToString());
startActivity(ⅰ);
Toast.makeText(parent.getContext()的PM是+
parent.getItemAtPosition(POS)的ToString(),Toast.LENGTH_LONG).show();
}
公共无效onNothingSelected(适配器视图父){
// 没做什么。
}
}
}
我本来期望您的解决方案的工作 - 我如果设置建立监听器之前,适配器虽然评选活动将不会触发
话虽这么说,一个简单的布尔标志,将允许您检测流氓第一选择事件,而忽略它。
I've thought of some less than elegant ways to solve this, but I know I must be missing something.
My onItemSelected fires off immediately without any interaction with the user, and this is undesired behavior. I wish for the UI to wait until the user selects something before it does anything.
I even tried setting up the listener in the onResume, hoping that would help, but it doesn't.
How can I stop this from firing off before the user can touch the control?
public class CMSHome extends Activity {
private Spinner spinner;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// Heres my spinner ///////////////////////////////////////////
spinner = (Spinner) findViewById(R.id.spinner);
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
this, R.array.pm_list, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
};
public void onResume() {
super.onResume();
spinner.setOnItemSelectedListener(new MyOnItemSelectedListener());
}
public class MyOnItemSelectedListener implements OnItemSelectedListener {
public void onItemSelected(AdapterView<?> parent,
View view, int pos, long id) {
Intent i = new Intent(CMSHome.this, ListProjects.class);
i.putExtra("bEmpID", parent.getItemAtPosition(pos).toString());
startActivity(i);
Toast.makeText(parent.getContext(), "The pm is " +
parent.getItemAtPosition(pos).toString(), Toast.LENGTH_LONG).show();
}
public void onNothingSelected(AdapterView parent) {
// Do nothing.
}
}
}
I would have expected your solution to work -- I though the selection event would not fire if you set the adapter before setting up the listener.
That being said, a simple boolean flag would allow you to detect the rogue first selection event and ignore it.
这篇关于如何保持onItemSelected从一个新近实例微调发射了?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!