Android错误-error: Found text " " where item tag is expected

error: Found text " " where item tag is expected

如果你是自己创建的一个文件,里面自己写<string name="key">value</string>然后再拷贝到strings.xml中,或者从别的文档中拷贝粘贴的,,则可能会出现上述为题,非常恶心

这个错误的原因是空格的格式不正确而引起的

解决方案:

1.在eclipse编辑器中重写一遍<string name="key">value</string>标签拷贝出去,在里面填入value

2.删除空格。拷贝后,将每一行按delete键返回到上一行的行尾,然后回车使其自动对其,同时也就删除了非法的空格

 
网上还看到了如下的解决方案,类似
所以为了解决这个问题,建议:
 
1.检查是否存在不必要的空格,如有即删。如果不行,那么2;
2.重新进行复制粘帖,尽量不要使用不同的文档格式。如果不行,那么3;
3.Replace所有xml文档中whitespace with你手工敲出的space. 如果不行,那么4;
4.自己手工重新编辑一遍。
 
这类错误可以试试用MS word or excel调用一下文档,看是否空格格式错误。

补充说明一下:类似的错误(xml文档中空格格式错误)还会gen文件夹中R.java出现
Syntax error on tokens, delete these  tokens
的报错。同样通过以上的方法可以解决这个错误。
 
Activity has leaked window that was originally added
场景:
在应用中处理耗时操作时,比如网络操作等为了增加用户体验,会使用线程+handler或android提供的AsyncTask来解决问题,一般是自定义Dialog或ProgressDialog显示进度。而这种异常就经常出现在这种场景
原因:
一个老外的解释:
Views have a reference to their parent Context (taken from constructor argument). If you leave an Activity without destroying Dialogs and other dynamically created Views, they still hold this reference to your Activity (if you created with this as Context: like new ProgressDialog(this)), so it cannot be collected by the GC, causing a memory leak.
主要是由于存在窗口句柄泄漏,在销毁activity时没有销毁掉某个PhoneWindow(即Dialog)
 View拥有它所在的Context的引用(通过构造函数的参数获得),当退出Activity没有关闭动态创建的View(如Dialog),它会一直拥有Context的引用,从而不能被GC回收,从而导致内存泄露。知道原因就好办了,我们在Activity中的OnDestroy()方法中释放资源就OK了,以下是我这种情况下的解决办法,其它控件也类似。
解决办法:

@Override
protected void onDestroy() {
if(refreshPd!=null)
{
refreshPd.dismiss();
}
super.onDestroy();
}

 
posted on 2013-03-07 18:14  花郎V  阅读(3777)  评论(0编辑  收藏  举报