我曾经想到了一些不太优雅的方法来解决这个问题,但我知道我一定错过了什么。
我的onItemSelected
会在用户与控件进行任何交互之前立即触发,这是不希望发生的行为。 我希望UI在用户选择某些内容之前等待,并且在此之后才执行相应操作。
我甚至尝试在onResume()
中设置监听器,希望这样做有所帮助,但没有效果。
如何阻止在用户触摸控件之前就触发 onItemSelected
?
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.
}
}
}
Spinner
中的第一项设为空,在onItemSelected
方法中检测字符串是否为空,如果不为空,则可以启动活动! - Muhammad Babar