如何等待对象侦听器完成对事件的处理



onCreate()中,我使用setOnItemSelectedListener()作为微调器。然后在onResume()中,我在同一个微调器上调用setSelection()。发生的情况是,Listener被调用,但事件没有按照我预期的顺序发生。如果我的代码看起来像这样:

sp1.setOnItemSelectedListener(...
    @Override
    public void onItemSelected(){...
        Log.e("marker", "stage 2");
    ...}
...});

Log.e("marker", "stage 1");
sp1.setSelection(1, true);
Log.e("marker", "stage 3");

在LogCat中,事件按以下顺序发生:阶段1、阶段3,然后是阶段2。显然,我希望它是第一阶段,第二阶段,然后第三阶段。我该如何做到这一点?

如果您确实需要,那么您可以在调用setSelection()之前删除侦听器,然后直接调用onItemSelected()(这是一个丑陋但简单的解决方案)

最新更新