Форум программистов, компьютерный форум CyberForum.ru

Сохранение изменений в xml файл - Android

Восстановить пароль Регистрация
Другие темы раздела
Android Приложение собирающее показания с акселерометра в SQlite базу http://www.cyberforum.ru/android-dev/thread649203.html
Помогите пожалуйста найти ошибку в коде. Когда работаю с проектом вроде всё нормально компилируется, а запускаю .apk файл пишется ошибка "При синтаксическом анализе пакета возникли неполадки". package com.dimond.acc; import java.io.File; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Timer; import java.util.TimerTask; import android.app.Activity; import...
Android Создание приложения для просмотра видео в интернете Всем привет!) С каждым днем операционная система Android становится все популярнее у большого числа людей) Я бы хотел разработать программу для просмотра видео с сайтов через телефон, смартфон, которая бы встраивалась в браузер Opera Mini в виде дополнения) При переходе с мобильного телефона на сайт, в котором находятся ролики, при нажатии на них, программа-плагин активизировалась и... http://www.cyberforum.ru/android-dev/thread649073.html
ScrollView с динамическими представлениями Android
Доброго времени суток! Есть scrollview, создаю его в xml. Нужно в нем разместить динамически несколько textview и button. Располагаться они должны в виде текста: tv, bt, tv, bt.... При создании не происходит перевода на новую строку, объекты создаются дальше, уходя за экран. Как решить данную проблему? Спасибо)
Android библиотека
Проблема следующая: создал библиотеку, которая содержит в себе некоторую логику и собственные элементы интерфейса. В частности, для одного из графических элементов использовался ViewPager, для чего к библиотеке была подключена библиотека support-v4. К моим до этого написанным проектом моя библиотека подключилась нормально. Потом я решил создать тестовый проект и поэксперементировать. Однако при...
Android как определить кол-во свободного места на SD card http://www.cyberforum.ru/android-dev/thread648088.html
Всем Привет! 1. гуглил везде примерно следующее : StatFs stat = new StatFs(Environment.getExternalStorageDirectory().getPath()); double sdAvailSize = (double)stat.getAvailableBlocks() * (double)stat.getBlockSize(); double gigaAvailable = sdAvailSize / 1073741824; запускаю на планшете в логи пишет 890 Мб
Android физика для игры Хотел спросить, проще ли написать свою физику для игры или изучить существующий движок типа And Engine? При использовании And Engine не нужно пользоваться surface view? Допустим вызываю активити где должна быть сама игра, некий цикл игры...нужно открывать активити андройда или у and engine своя активити? подробнее

Показать сообщение отдельно
Faustlogger
 Аватар для Faustlogger
43 / 35 / 2
Регистрация: 14.09.2011
Сообщений: 158
Записей в блоге: 1
09.09.2012, 23:33  [ТС]     Сохранение изменений в xml файл
V0v1k, попробовал, не получилось.

Вот мой код.

Файл Main.java. Выполняет обработку событий на форме. При тестировании использовал имя файла shop_items.xml и res\\xml\\shop_items.xml
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
package com.example.test;
 
 
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
 
import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
 
 
public class Main extends Activity {
 
    private ArrayList<Item> iList;
    private DataDocument doc;
    private String FILENAME = "res\\xml\\shop_items.xml";
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);         
        
        doc = new DataDocument(getResources().getXml(R.xml.shop_items));
        
        iList = doc.getItemList();
        
        for(int i = 0; i<iList.size(); i++){
            System.out.println(iList.get(i).getName());
        }
        
        Button buyButton = (Button) findViewById(R.id.button_buy);
        
        buyButton.setOnClickListener(new OnClickListener(){
 
            public void onClick(View v) {
                iList.add(new Item("Nokia 5800","smartphone","320.00",1));
                try {
                    FileOutputStream fos = openFileOutput(FILENAME, Context.MODE_PRIVATE);
                    fos.write(doc.writeXML(iList).getBytes());
                    fos.close();
                } catch (FileNotFoundException e) {
                    // TODO Auto-generated catch block
                    Log.e("FileNotFoundException", e.getMessage());
                } catch (IOException ie) {
                    Log.e("IOException", ie.getMessage());
                }
                
            }
            
        });
        
    }
 
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }
}
Класс Item(Item.java) - хранит в себе данные о товаре.
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
package com.example.test;
 
public class Item {
    private String name;
    private String type;
    private String price;
    private int sum;
    
    public Item(String name, String type, String price, int sum){
        this.setName(name);
        this.setType(type);
        this.setPrice(price);
        this.setSum(sum);
    }
    
    public String getName(){
        return this.name;
    }
    
    public void setName(String name){
        this.name = name;
    }
    
    public String getType(){
        return this.type;
    }
    
    public void setType(String type){
        this.type = type;
    }
    
    public String getPrice(){
        return this.price;
    }
    
    public void setPrice(String price){
        this.price = price;
    }
    
    public int getSum(){
        return this.sum;
    }
    
    public void setSum(int sum){
        this.sum = sum;
    }
}
Класс DataDocument.java отвечает за обработку XML.
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
package com.example.test;
 
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.StringWriter;
import java.util.ArrayList;
import java.util.Iterator;
 
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import org.xmlpull.v1.XmlSerializer;
 
import android.content.Context;
import android.util.Log;
import android.util.Xml;
 
public class DataDocument {
    private XmlPullParser parser;
    
    public DataDocument(XmlPullParser newParser){
        this.setParser(newParser);
    }
    
    public void setParser(XmlPullParser newParser){
        this.parser = newParser;
    }
    
    public ArrayList<Item> getItemList(){
        ArrayList<Item> result = new ArrayList<Item>();
        try{
            while(parser.getEventType()!=XmlPullParser.END_DOCUMENT){
                if(parser.getEventType()==XmlPullParser.START_TAG && parser.getName().equals("item")){
                    result.add(new Item(parser.getAttributeValue(0), parser.getAttributeValue(1), parser.getAttributeValue(2), Integer.parseInt(parser.getAttributeValue(3))));                 
                }  
                parser.next();
            }
        }catch(XmlPullParserException e){
            System.out.println("Error: "+e.getStackTrace());
        } catch (IOException e) {
            System.out.println("Error: Can't parse file");
        }
        return result;
    }
    
    public String writeXML(ArrayList<Item> itemList){
        
        XmlSerializer serializer = Xml.newSerializer();
        StringWriter writer = new StringWriter();
        try{
            serializer.setOutput(writer);
            serializer.startDocument(null, Boolean.valueOf(true));
            serializer.startTag(null, "items");
            
            for(int i = 0; i<itemList.size();i++){
                serializer.startTag(null, "item");
                serializer.attribute(null, "name", itemList.get(i).getName());
                serializer.attribute(null, "type", itemList.get(i).getType());
                serializer.attribute(null, "price", itemList.get(i).getPrice());
                serializer.attribute(null, "sum", String.valueOf(itemList.get(i).getSum()));
                serializer.endTag(null, null);
            }
            
            serializer.endTag(null, "items");
            serializer.endDocument();
            //serializer.flush();
        }catch(Exception e) {
            Log.e("Exception", "Exception occured in wroting");
        }
        return writer.toString();
    }
}
 
Текущее время: 03:30. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru