2013-08-24 3 views
5

Ich nehme einen Kurs auf Android-App-Entwicklung und versucht zu erstellen und eine XML-Datei in den internen Speicher auf dem Android schreiben. Ich habe Probleme mit der Einrichtung, was die Methoden betrifft. Ich habe das meiste geschrieben, habe aber Fehler, die ich nicht herausfinden kann. Vielleicht, weil ich den ganzen Tag daran gearbeitet habe, weiß ich nicht. Hier ist mein Code für diese Klasse. Fehler, die ich bekomme, sind illegale Modifikatoren für öffentliche String Schätze und FileOutputStream. Jede Hilfe wäre willkommen.Android Erstellen und Schreiben von XML in Datei

Ok, ich fand das erste Problem, musste versuchen/fangen verwenden. War in der Lage zu laufen und alles hat gut funktioniert, bis ich zur Sicherungsdatei kam. Erhalte jetzt einen Fehler:

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

Dies kommt direkt nachdem die "Datei erstellt" in das Protokoll geschrieben wird. Ich schätze, es versucht in die falsche Datei zu schreiben? Brauchen Sie es in/data/data zu schreiben. In meiner App ist kein Audio vorhanden. Ich habe den neuen Code unten hinzugefügt:

Alter Code:

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(); 

    } 

    } 

} 

Neuer Code:

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

Ich bin ein Neuling ... Entschuldigung, verstehe ich nicht. –

+0

Wenn Sie Code auf dem Emulator ausführen oder Ihr Gerät an Ihren Computer angeschlossen ist, zeigt das Android-Protokoll beim Absturz des Programms einen Stack-Trace an. Es ist eine Reihe von Fehlerprotokollen, die die Methodenkette zeigen, die zu einer nicht abgefangenen Ausnahme geführt hat. – Tenfour04

Antwort

6

ich dieses herausgefunden. Ich habe das Attribut-Tag falsch verwendet. Kommen Sie, um es herauszufinden, ich brauchte es nicht einmal zu benutzen. Der richtige Weg war folgendes zu tun:

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

Nachdem alle von ihnen zu ändern, ich war in der Lage, die Datei zu erstellen und die Daten zu schreiben.