2013-08-24 38 views
5

Tôi đang tham gia một khóa học về phát triển ứng dụng android và cố gắng tạo và viết tệp xml vào bộ nhớ trong trên Android. Tôi đang gặp vấn đề với cách thiết lập này ban đầu, theo như các phương pháp. Tôi đã viết nhiều nhất nhưng có lỗi mà tôi không thể hiểu được. Có lẽ bởi vì tôi đã làm việc này cả ngày, tôi không biết. Đây là mã của tôi cho lớp này. Lỗi tôi nhận được là các công cụ sửa đổi bất hợp pháp trên kho báu String công khai và FileOutputStream. Bất kỳ trợ giúp sẽ được đánh giá cao.Android tạo và viết xml thành tệp

Ok, tôi đã tìm ra vấn đề ban đầu, cần sử dụng try/catch. Đã có thể chạy và tất cả mọi thứ làm việc tốt cho đến khi tôi nhận được để lưu các tập tin. Gặp lỗi ngay bây giờ:

SoundPool error loading/system./media./audio./ui/KeypressReturn.ogg. 
AudioService Soundpool could not load file: /system/media/audio/ui/KeypressReturnj.ogg 

Điều này xuất hiện ngay sau khi "tệp được tạo" được ghi vào nhật ký. Tôi đoán nó đang cố gắng ghi vào tập tin sai? Cần nó để ghi vào/dữ liệu/dữ liệu. Không có âm thanh trong ứng dụng của tôi. Tôi đã thêm mã mới bên dưới:

Cũ Mã số:

public void onSaveTreasureClick(View v) throws FileNotFoundException{ 
     Log.v("SaveTreasure","Button was clicked"); 
     File f = new File(getFilesDir(),"treasure.xml"); 
     FileOutputStream myFile=openFileOutput(f); 
     Log.v("WriteFile","file created"); 


     private FileOutputStream openFileOutput(File f) { 
      // TODO Auto-generated method stub 
      return null; 
     } 



    public String treasures(Treasure treasure) throws Exception{ 

     XmlSerializer xmlSerializer = Xml.newSerializer(); 
     StringWriter write = new StringWriter(); 
     final EditText tres=(EditText) findViewById(R.id.treasureNametxt); 
     String treasureName=tres.getText().toString(); 
     final EditText c1=(EditText) findViewById(R.id.clue1Txt); 
     String clue1=c1.getText().toString(); 
     final EditText c2=(EditText) findViewById(R.id.clue2Txt); 
     String clue2=c2.getText().toString(); 
     final EditText c3=(EditText) findViewById(R.id.clue3Txt); 
     String clue3=c3.getText().toString(); 
     final EditText ans=(EditText) findViewById(R.id.answerTxt); 
     String answer = ans.getText().toString(); 
     final EditText loc =(EditText) findViewById(R.id.locationTxt); 
     String location = loc.getText().toString(); 
     final EditText pv=(EditText) findViewById(R.id.pointValueTxt); 
     String pointValue=pv.getText().toString(); 

     xmlSerializer.setOutput(write); 
    //start Document 
     xmlSerializer.startDocument("UTF-8",true); 
    //open tag <items> 
     xmlSerializer.startTag("", "Items"); 
     xmlSerializer.startTag("", "Treasures"); 

     xmlSerializer.startTag("", "TreasureName"); 
     xmlSerializer.attribute("", TreasureName, treasureName); 
     xmlSerializer.endTag("", "TreasureName"); 

     xmlSerializer.startTag("", "Clue1"); 
     xmlSerializer.attribute("", "Clue1", clue1); 
     xmlSerializer.endTag("", "Clue1"); 

     xmlSerializer.startTag("", "Clue2"); 
     xmlSerializer.attribute("", "Clue2", clue2); 
     xmlSerializer.endTag("", "Clue2"); 

     xmlSerializer.startTag("", "Clue3"); 
     xmlSerializer.attribute("", "Clue3", clue3); 
     xmlSerializer.endTag("", "Clue3"); 

     xmlSerializer.startTag("", "answer"); 
     xmlSerializer.attribute("", "answer", answer); 
     xmlSerializer.endTag("","answer"); 

     xmlSerializer.startTag("", "location"); 
     xmlSerializer.attribute("", "location", location); 
     xmlSerializer.endTag("", "location"); 

     xmlSerializer.startTag("", "Points"); 
     xmlSerializer.attribute("", "PointValue", pointValue); 
     xmlSerializer.endTag("", "Points"); 

     xmlSerializer.endTag("","Treasures"); 
     xmlSerializer.endTag("", "Items"); 

     xmlSerializer.endDocument(); 

     return treasure.toString(); 

    } 

    } 

} 

Mã mới:

public void onSaveTreasureClick(View v) throws FileNotFoundException, SAXException{ 
     Log.v("SaveTreasure","Button was clicked"); 
     File f = new File(getFilesDir(),"treasure.xml"); 
     FileOutputStream myFile=openFileOutput(f); 
     Log.v("WriteFile","file created"); 


    // private FileOutputStream openFileOutput(File f) { 
      // TODO Auto-generated method stub 
     // return null; 
    // } 


try{ 
    final String treasures; 

     XmlSerializer xmlSerializer = Xml.newSerializer(); 
     StringWriter writer = new StringWriter(); 
     final EditText tres=(EditText) findViewById(R.id.treasureNametxt); 
     String treasureName=tres.getText().toString(); 
     final EditText c1=(EditText) findViewById(R.id.clue1Txt); 
     String clue1=c1.getText().toString(); 
     final EditText c2=(EditText) findViewById(R.id.clue2Txt); 
     String clue2=c2.getText().toString(); 
     final EditText c3=(EditText) findViewById(R.id.clue3Txt); 
     String clue3=c3.getText().toString(); 
     final EditText ans=(EditText) findViewById(R.id.answerTxt); 
     String answer = ans.getText().toString(); 
     final EditText loc =(EditText) findViewById(R.id.locationTxt); 
     String location = loc.getText().toString(); 
     final EditText pv=(EditText) findViewById(R.id.pointValueTxt); 
     String pointValue=pv.getText().toString(); 

     xmlSerializer.setOutput(writer); 
    //start Document 
     xmlSerializer.startDocument("UTF-8",true); 
    //open tag <items> 
     xmlSerializer.startTag("", "Items"); 
     xmlSerializer.startTag("", "Treasures"); 

     xmlSerializer.startTag("", "TreasureName"); 
     xmlSerializer.attribute("", treasureName, treasureName); 
     xmlSerializer.endTag("", "TreasureName"); 

     xmlSerializer.startTag("", "Clue1"); 
     xmlSerializer.attribute("", "Clue1", clue1); 
     xmlSerializer.endTag("", "Clue1"); 

     xmlSerializer.startTag("", "Clue2"); 
     xmlSerializer.attribute("", "Clue2", clue2); 
     xmlSerializer.endTag("", "Clue2"); 

     xmlSerializer.startTag("", "Clue3"); 
     xmlSerializer.attribute("", "Clue3", clue3); 
     xmlSerializer.endTag("", "Clue3"); 

     xmlSerializer.startTag("", "answer"); 
     xmlSerializer.attribute("", "answer", answer); 
     xmlSerializer.endTag("","answer"); 

     xmlSerializer.startTag("", "location"); 
     xmlSerializer.attribute("", "location", location); 
     xmlSerializer.endTag("", "location"); 

     xmlSerializer.startTag("", "Points"); 
     xmlSerializer.attribute("", "PointValue", pointValue); 
     xmlSerializer.endTag("", "Points"); 

     xmlSerializer.endTag("","Treasures"); 
     xmlSerializer.endTag("", "Items"); 

     xmlSerializer.endDocument(); 

     writer.toString(); 
       myFile.write(writer.toString().getBytes()); 

} 
catch (FileNotFoundException e) { 
    System.err.println("FileNotFoundException: " + e.getMessage()); 
    throw new SAXException(e); 

} catch (IOException e) { 
    System.err.println("Caught IOException: " + e.getMessage()); 
} 

} 
+0

stacktraces ....? – danijoo

+0

Tôi là một người mới ... xin lỗi tôi không hiểu. –

+0

Khi bạn chạy mã trên trình mô phỏng hoặc với thiết bị được gắn vào máy tính của bạn, Nhật ký Android sẽ hiển thị dấu vết ngăn xếp khi chương trình gặp sự cố. Đó là một loạt các bản ghi lỗi cho thấy chuỗi các phương pháp dẫn đến một ngoại lệ không bị bắt. – Tenfour04

Trả lời

6

I figured này ra ngoài. Tôi đã sử dụng thẻ thuộc tính không chính xác. Hãy đến để tìm hiểu, tôi thậm chí không cần phải sử dụng nó. Cách chính xác là làm như sau:

xmlSerializer.startTag("", "TreasureName"); 
xmlSerializer.text(treasureName); 
xmlSerializer.endTag("","TreasureName"); 

Sau khi thay đổi tất cả, tôi có thể tạo tệp và ghi dữ liệu vào đó.

Các vấn đề liên quan