读书人

Android-同一Context中屡次弹出气泡消

发布时间: 2013-01-23 10:44:49 作者: rapoo

Android-同一Context中多次弹出气泡消息注意事项
?

”下面是2.2和4.0中Toast源码的链接:

http://www.oschina.net/code/explore/android-2.2-froyo/android/widget/Toast.java

http://www.oschina.net/code/explore/android-4.0.1/core/java/android/widget/Toast.java

比较两者关于cancel()处理的差异发现了如下差异:

在4.0中如下:

final Runnable mHide = new Runnable() {

???????????public void run() {

??????????????? handleHide();

??????????????? // Don't do this in handleHide()because it is also invoked by handleShow()

??????????????? mNextView = null;

???????????}

???????};

而2.2中没有mNextView = null;这一行代码。

再查看show()中有如下源码:

if (mNextView == null) {

???????????throw new RuntimeException("setView must have been called");

???????}

所以判断产生的Bug的原因是2.2系统和4.0系统对cancel的处理的差异造成的,将cancel注释就可以正常显示了。“

?

但是4.0以下系统需要用到cancel()怎么办?下面是另一篇文章?http://blog.csdn.net/gouguofei/article/details/7814195?给出的一个解决办法,贴出片段:

?“但是注释掉以后对4.0以下的系统需要cancel()怎么办呢,这里我的解决办法是在程序里获取系统版本,如果是4.0及以上就不执行cancel(),否则执行cancel()。?”

?

获取系统版本比较简单:int version = Integer.valueOf(android.os.Build.VERSION.SDK) 即可获得

?

?

?

?

读书人网 >Android

热点推荐