我有两个活动,activity1正在启动activity2。 在活动2中,我将OnFocusChangeListener注册到AutoCompleteTextView:
someTextView.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus)
((AutoCompleteTextView)v).showDropDown();
else
((AutoCompleteTextView)v).dismissDropDown();
}
});
如果我在textview中写了一些内容,然后活动配置发生了变化(屏幕旋转),我得到了WindowManager.BadTokenException。 我把它分离到showDropDown和dismissDropdown方法(通过注释它们)。 我也尝试直接在Activity的View对象上执行这两个方法(而不是通过侦听器传递的那个)并得到相同的异常。
我做错了什么?
答案 0 :(得分:0)
当方向改变了注意力并再次创造时。通过这种方式,由先前活动上下文的上下文创建的自动完成的开放列表将会破坏,因为活动是破坏性的。你必须处理orientiaon改变你自己。因此,在旋转活动中,不是存活和自动完成列表视图保持不变。
请在活动代码中的AndroidManifest.xml中添加此行。
android:configChanges="orientation|keyboard|keyboardHidden"
例如
<activity
android:name=".LoginPageActivity"
android:label="@string/app_name"
android:screenOrientation = "sensor"
android:configChanges="orientation|keyboard|keyboardHidden"/>