gpt4 book ai didi

android - 如果选择了非零位置,则在旋转后调用 Spinner 的 onItemSelected 回调两次

转载 作者:IT老高 更新时间:2023-10-28 22:00:51 25 4
gpt4 key购买 nike

当我创建我的 Activity 时,我设置了一个 Spinner,为它分配了一个监听器和一个初始值。我知道在应用程序初始化期间会自动调用 onItemSelected 回调。我觉得奇怪的是,当设备旋转时,这种情况会发生 两次,给我带来了一些我必须以某种方式规避的问题。如果微调器初始选择为零,这不会发生。我能够隔离问题,这是触发它的最简单的 Activity :

public class MainActivity extends Activity implements OnItemSelectedListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.i("Test","Activity onCreate");
setContentView(R.layout.activity_main);
((Spinner)findViewById(R.id.spinner1)).setSelection(2);
((Spinner)findViewById(R.id.spinner1)).setOnItemSelectedListener(this);
}
@Override
public void onItemSelected(AdapterView<?> spin, View selview, int pos, long selId)
{
Log.i("Test","spin:"+spin+" sel:"+selview+" pos:"+pos+" selId:"+selId);
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {}
}

这是应用程序启动然后设备旋转时显示的 logcat:

    I/Test( 9881): spin:android.widget.Spinner@4052f508 sel:android.widget.TextView@40530b08 pos:2 selId:2
I/Test( 9881): Activity onCreate
I/Test( 9881): spin:android.widget.Spinner@40535d80 sel:android.widget.TextView@40538758 pos:2 selId:2
I/Test( 9881): spin:android.widget.Spinner@40535d80 sel:android.widget.TextView@40538758 pos:2 selId:2

这是预期的行为吗?我错过了什么吗?

最佳答案

设法在另一个 stackoverflow 问题中找到解决方案:

spinner.post(new Runnable() {
public void run() {
spinner.setOnItemSelectedListener(listener);
}
});

关于android - 如果选择了非零位置,则在旋转后调用 Spinner 的 onItemSelected 回调两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14560733/

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