Java Android spinner在OnCreate中执行ItemSelectedListener

Java Android spinner在OnCreate中执行ItemSelectedListener,java,android,Java,Android,在我的代码中,当您在微调器中选择一个项目时,应用程序将更改屏幕。但是,当它第一次加载时,它会执行ItemSelectedListener。我只需要在微调器中选择项目时,而不是在加载表单时,才需要它来执行代码 守则: protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.select_location_layou

在我的代码中,当您在微调器中选择一个项目时,应用程序将更改屏幕。但是,当它第一次加载时,它会执行ItemSelectedListener。我只需要在微调器中选择项目时,而不是在加载表单时,才需要它来执行代码

守则:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.select_location_layout);

Spinner spnEUID = (Spinner)findViewById(R.id.spnEUID);
final DatabaseHandler handler = new DatabaseHandler(this);

ArrayList<String> EUIDs = handler.GetAllAOI();
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item, EUIDs);
spnEUID.setAdapter(adapter);

final EditText txtEUID = (EditText)findViewById(R.id.txtScanEUID);
txtEUID.setOnKeyListener(new OnKeyListener() {
    public boolean onKey(View v, int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_ENTER && event.getAction() == KeyEvent.ACTION_UP) {
            PublicVariables.AOI = handler.getAOI(Integer.parseInt(txtEUID.getText().toString()));
            Intent intent = new Intent(SelectLocationScreen.this, RaploScanScreen.class);
            startActivity(intent);
        }
        return false;
    }
});

spnEUID.setOnItemSelectedListener(new OnItemSelectedListener () {
    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
        PublicVariables.AOI = parent.getItemAtPosition(pos).toString();
        Intent intent = new Intent(SelectLocationScreen.this, RaploScanScreen.class);
        startActivity(intent);
    }

    @Override
    public void onNothingSelected(AdapterView<?> arg0) {
        // TODO Auto-generated method stub

    }
});
}
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(右布局。选择位置布局);
微调器spnEUID=(微调器)findViewById(R.id.spnEUID);
final DatabaseHandler=新的DatabaseHandler(此);
ArrayList EUIDs=handler.GetAllAOI();
ArrayAdapter=新的ArrayAdapter(这是android.R.layout.simple\u微调器\u下拉菜单\u项,EUIDs);
spnEUID.setAdapter(适配器);
final EditText txtEUID=(EditText)findViewById(R.id.txtscanneuid);
setOnKeyListener(新的OnKeyListener(){
公共布尔onKey(视图v、int keyCode、KeyEvent事件){
如果(keyCode==KeyEvent.keyCode\u输入&&event.getAction()==KeyEvent.ACTION\u UP){
PublicVariables.AOI=handler.getAOI(Integer.parseInt(txtEUID.getText().toString());
意向意向=新意向(选择locationscreen.this,RaploScanScreen.class);
星触觉(意向);
}
返回false;
}
});
spnEUID.setOnItemSelectedListener(新的OnItemSelectedListener(){
@凌驾
已选择公共位置(AdapterView父项、视图、整数位置、长id){
PublicVariables.AOI=parent.getItemAtPosition(pos.toString();
意向意向=新意向(选择locationscreen.this,RaploScanScreen.class);
星触觉(意向);
}
@凌驾
未选择公共无效(AdapterView arg0){
//TODO自动生成的方法存根
}
});
}

我通过在我的OnItemSelectedListener中添加类似于
previousSelection
的变量解决了这个问题:

  • 如果为
    null
    ,则为假警报
  • 如果不是,则用户做出了此选择


这是我对一个类似问题的回答,我写这个是为了避免您的问题,当用户再次选择相同的项目时

我解决了这个问题,在我的OnItemSelectedListener中添加了一个变量,如
previousSelection

  • 如果为
    null
    ,则为假警报
  • 如果不是,则用户做出了此选择


这是我对一个类似问题的回答,我写这个是为了避免您的问题,当用户再次选择相同的项目时

多谢各位。我试过类似的方法。我的错误是我声明变量的地方。再次感谢!非常感谢。我试过类似的方法。我的错误是我声明变量的地方。再次感谢!