您的位置:首页 > 移动开发 > Android开发

Android tips

2015-10-09 21:33 495 查看
【1】web 服务器返回的数据需以xml或Jason格式,如果直接String读取的话编码不对,equals()无法使用。

【2 ArrayList.add()操作覆盖前面数据】

先看代码:

Board board = new Board();
         List<Board > boardList = new ArrayList<Board >();
        
         XmlPullParserFactory factory = XmlPullParserFactory.newInstance ();
         XmlPullParser xmlPullParser = factory.newPullParser();
        xmlPullParser .setInput( new StringReader(xmlData ));
         int eventType = xmlPullParser.getEventType();
        
         String date = "";
         int num = 0;;
         String code = "";
         while(eventType != XmlPullParser.END_DOCUMENT ){
             String nodeName = xmlPullParser.getName();
             switch(eventType ){
             case XmlPullParser .START_TAG:{
                 if("date" .equals( nodeName)){
                    board.getDate(xmlPullParser.nextText());
                 }else if("num" .equals( nodeName)){
                    board.getNum(Integer.parseInt (xmlPullParser. nextText()));
                 }else if("code" .equals( nodeName)){
                    board.getCode(xmlPullParser.nextText());
                 }
                 break;
             }
             case XmlPullParser .END_TAG:{
                 if(user .equals( nodeName)){
                    boardList .add( board);
                     Log.i ("TAG", "add list:"+board. getDate());
                 }
                 break;
             }
             default:
                 break;
             }
            eventType = xmlPullParser. next();
         }


在上面的代码中,先给board对象的每个元素赋值,然后用add(board)将对象添加到list中。
结果显示,boardList中的每个元素都被最后一个元素覆盖,即每个元素的值都是最后一个元素。

这是因为,add( )方法添加的是对象的引用,每次都更新了这个引用的值,当然list里面的值都一样的。

正确的做法是在每个循环中都new 一个新的board,再对它赋值。

【3】调用系统相册打开指定目录的文件

Intent intent = new Intent(Intent .ACTION_VIEW);
intent .setDataAndType( Uri.parse ("file://"+ board.getSystemPath ()), "image/*" );
startActivity(intent );


【4】Android5.1系统上报Package Not Found, OpenCV library package was not found

原因,opencv manager 2.4.9版本太旧,不支持android5.1

换成opencv manager 2..4.11就可以了。

程序里面的opencv库仍然用2.4.9也没问题。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: