gpt4 book ai didi

android - 如何防止 onItemSelected 在新实例化的 Spinner 上触发?

转载 作者:IT老高 更新时间:2023-10-28 12:49:19 25 4
gpt4 key购买 nike

我已经想到了一些不太优雅的方法来解决这个问题,但我知道我一定错过了一些东西。

我的 onItemSelected 在没有与用户进行任何交互的情况下立即触发,这是不受欢迎的行为。我希望 UI 等到用户选择某些内容后再执行任何操作。

我什至尝试在 onResume() 中设置监听器,希望能有所帮助,但没有。

如何在用户触摸控件之前阻止它触发?

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.
}
}
}

最佳答案

Runnables 的使用是完全不正确的。

setOnItemSelectedListener(listener)之前的初始选择中使用setSelection(position, false);

这样,您可以在没有动画的情况下设置您的选择,这会导致调用 on item selected 监听器。但是监听器为空,因此没有运行任何内容。然后分配您的听众。

所以请遵循这个确切的顺序:

Spinner s = (Spinner)Util.findViewById(view, R.id.sound, R.id.spinner);
s.setAdapter(adapter);
s.setSelection(position, false);
s.setOnItemSelectedListener(listener);

关于android - 如何防止 onItemSelected 在新实例化的 Spinner 上触发?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2562248/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com