Android 为什么';屏幕方向改变后,t阵列自适应过滤器是否正确?

Android 为什么';屏幕方向改变后,t阵列自适应过滤器是否正确?,android,filter,orientation,screen-orientation,Android,Filter,Orientation,Screen Orientation,布局是基本的:顶部是EditText,后面是ListView。EditText实现了TextWatcher.ContextChanged,以便使用输入的文本调用ArrayAdapter.getFilter.filter。ArrayAdapter的数据在恢复时异步刷新(请参阅下面的代码段)。很简单,也很好用。。。直到屏幕方向改变。为什么当手机转向一边时,过滤会突然中断 public class SometActivity extends ListActivity { @Override

布局是基本的:顶部是EditText,后面是ListView。EditText实现了TextWatcher.ContextChanged,以便使用输入的文本调用ArrayAdapter.getFilter.filter。ArrayAdapter的数据在恢复时异步刷新(请参阅下面的代码段)。很简单,也很好用。。。直到屏幕方向改变。为什么当手机转向一边时,过滤会突然中断

public class SometActivity extends ListActivity
{
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        ...
        listAdapter = new ArrayAdapter<MemoryStatistic>(this, R.layout.list_item);
        setListAdapter(listAdapter);
        searchText = (EditText)findViewById(R.id.searchText);
        searchText.addTextChangedListener(new TextWatcher()
        {
            @Override
            public void onTextChanged(CharSequence text, int start, int before, int count)
            {
                listAdapter.getFilter().filter(text);
            }
            ...
        }
        ...
    }

    @Override
    protected void onResume()
    {
        asyncRefreshListAdapter();//refresh the data asynchronously when activity is resumed
    }
}
public类sometractivity扩展了ListActivity
{
@凌驾
创建时的公共void(Bundle savedInstanceState)
{
...
listAdapter=new ArrayAdapter(此,R.layout.list_项);
setListAdapter(listAdapter);
searchText=(EditText)findViewById(R.id.searchText);
searchText.addTextChangedListener(新的TextWatcher()
{
@凌驾
public void onTextChanged(字符序列文本、int start、int before、int count)
{
listAdapter.getFilter().filter(文本);
}
...
}
...
}
@凌驾
受保护的void onResume()
{
asyncRefreshListAdapter();//恢复活动时异步刷新数据
}
}

我想我会写这篇自我回复的帖子,以防其他刚接触Android开发的程序员(像我一样)被这篇帖子难住。因此,根据onResume的说法,只有在活动正常时才会调用它

1) 创造

2) 重新启动

3) 恢复(恢复后带到前台)

好的,那么屏幕方向和这个有什么关系呢? 嗯,大多数阅读文档的开发人员都会浏览文档,因为有很多东西要读,他们只是想实现一些很酷的东西。我也一样。如果我读得更深入,我以后就会避免很多头痛:

除非您另有规定,否则配置更改(如屏幕方向、语言、输入设备等的更改)将导致您当前的活动被破坏


现在很明显,为什么过滤器不能正常工作。问题是(一旦活动在屏幕方向更改时被销毁),listAdapter在开始筛选之前没有完全或根本没有填充(由于刷新的异步性质)。

确切地说,仅适用于即将到达此处的其他用户:您可以通过将
方向
添加到
android:configChanges
属性来关闭此默认行为