我对Android开发很陌生,我正在寻找有关我正面临的问题的解释,以便更深入地了解AndroID.
我有这段代码:
someautoCompleteTextVIEw.setonFocuschangelistener(new OnFocuschangelistener() { @OverrIDe public voID onFocusChange(VIEw v, boolean hasFocus) { if (hasFocus) ((autoCompleteTextVIEw)v).showDropDown(); else ((autoCompleteTextVIEw)v).dismissDropDown(); } });
如果下拉列表可见并且配置发生更改(屏幕方向),我将收到BadTokenException.
我知道活动被破坏了,并且创建了一个新活动来替换它,但我不太明白究竟发生了什么,为什么我得到了这个例外,
毕竟,创建了一个新活动,新的侦听器注册到新视图,旧的视图被销毁.
我知道我可以通过告诉清单我将自己处理配置更改来解决这个问题,但我正在寻求更深入的理解.
谢谢!
解决方法:
我认为当你处于横向模式时,并且当聚焦autoCompleteTextVIEw时,这个可编辑字段将切换到“全屏模式”,即只有值和键盘显示在屏幕上.
所以我想在这种情况下,下拉永远不可见,这就是showDropDown()抛出异常的原因.
要避免这种情况,请在代码中添加以下行:
someautoCompleteTextVIEw.setonFocuschangelistener(new OnFocuschangelistener() {@OverrIDe public voID onFocusChange(VIEw v, boolean hasFocus) { if (v.getwindowVisibility() != VIEw.VISIBLE) { return; } if (hasFocus) ((autoCompleteTextVIEw)v).showDropDown(); else ((autoCompleteTextVIEw)v).dismissDropDown(); } });
总结 以上是内存溢出为你收集整理的android – 关于配置更改和上下文的活动重新创建的说明全部内容,希望文章能够帮你解决android – 关于配置更改和上下文的活动重新创建的说明所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)