Android 我正在尝试读取xml文件以编辑文本

Android 我正在尝试读取xml文件以编辑文本,android,Android,我不知道为什么我的代码不能显示在我的编辑文本上,有人能帮忙吗?。我真的需要这个来工作 我将xml创建为文件夹res\raw下的菜单。我不知道读文件是否有问题。我希望edittext在运行时/oncreate时显示 public class CreateTreasureActivity extends Activity { private EditText name; private EditText clue1; private EditText

我不知道为什么我的代码不能显示在我的编辑文本上,有人能帮忙吗?。我真的需要这个来工作

我将xml创建为文件夹res\raw下的菜单。我不知道读文件是否有问题。我希望edittext在运行时/oncreate时显示

public class CreateTreasureActivity extends Activity {

    private EditText      name;
    private EditText      clue1;
    private EditText      clue2;
    private EditText      clue3;
    private EditText      answer;
    private EditText      location;
    private EditText      point_value;

    FileOutputStream myFile;
    XmlSerializer serializer;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_create_treasure);


        name       = (EditText) findViewById(R.id.name);          
        name.setText("");

        clue1       = (EditText) findViewById(R.id.clue1);          
        clue1.setText("");

        clue2       = (EditText) findViewById(R.id.clue2);          
        clue2.setText("");

        clue3       = (EditText) findViewById(R.id.clue3);          
        clue3.setText("");

        answer       = (EditText) findViewById(R.id.answer);          
        answer.setText("");

        location       = (EditText) findViewById(R.id.location);          
        location.setText("");

        point_value       = (EditText) findViewById(R.id.point_value );          
        point_value .setText("");
        // create the initial xml document if it already does not exist
        try 
        {
            File filename = new File(getFilesDir(), "treasure.xml");

            if(!filename.exists())
            {
                myFile = openFileOutput("treasure.xml", Activity.MODE_APPEND);

                // create a new XmlSerializer object 
                serializer = Xml.newSerializer();

                // use myFile as your xml serializer and set to UTF-8 encoding
                serializer.setOutput(myFile, "UTF-8");

                // Write <?xml declaration with encoding 
                serializer.startDocument(null, Boolean.valueOf(true));

                // set indentation option 
                serializer.setFeature("http://xmlpull.org/v1/doc/features.html#indent-output", true);

                // start a new top level tag and other tags
                serializer.startTag(null, "Treasure");
            }
            else
            {
                // use myFile as your xml serializer and set to UTF-8 encoding
                myFile = openFileOutput("treasure.xml", Activity.MODE_APPEND);

                // create a new XmlSerializer object 
                serializer = Xml.newSerializer();

                // use myFile as your xml serializer and set to UTF-8 encoding
                serializer.setOutput(myFile, "UTF-8");
            }
        }
        catch (Exception e)
        {
            Log.e("Exception::",  e.getMessage());
        }
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.create_treasure, menu);
        return true;
    }

    public void onSaveButton(View v)
    {
        try
        {   
            // start a new top level tag and other tags, for our FINAL project, Contact could be Treasure Item
            // we don't need to have nested <Treasure> followed by Items, the format can be similar to the below
            // this way, we don't need to add an end tag for outermost element

            // create tags and values
            serializer.startTag(null, "Items");
            serializer.startTag(null, "treasure");
            serializer.startTag(null, "name");
            serializer.text(name.getText().toString());  // retrieve name entered by user from text field
            serializer.endTag(null, "name");

            serializer.startTag(null, "clue1");
            serializer.text(clue1.getText().toString());
            serializer.endTag(null, "clue1");

            serializer.startTag(null, "clue2");
            serializer.text(clue2.getText().toString());
            serializer.endTag(null, "clue2");

            serializer.startTag(null, "clue3");
            serializer.text(clue3.getText().toString());
            serializer.endTag(null, "clue3");

            serializer.startTag(null, "answer");
            serializer.text(answer.getText().toString());
            serializer.endTag(null, "answer");


            serializer.startTag(null, "pointValue");
            serializer.text(point_value.getText().toString());
            serializer.endTag(null, "pointValue");
            serializer.endTag(null, "Treasure");
            serializer.endTag(null, "Items");

            // perform the write by flushing
            serializer.flush();

            // clear the text fields
            name.setText("");
            clue1.setText("");
            clue2.setText("");
            clue3.setText("");
            answer.setText("");
            location.setText("");
            point_value.setText("");
        } 
        catch (Exception e)
        {
            // use logcat to display errors
            Log.e("Exception::",  e.getMessage());
        }       
    }
}
公共类活动扩展活动{
私有文本名;
私人编辑文本俱乐部1;
私人编辑文本俱乐部2;
私人编辑文本俱乐部3;
私人编辑文本回答;
私密文本定位;
私有编辑文本点_值;
FileOutputStreamMyFile;
XmlSerializer序列化程序;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u create\u珍宝);
name=(EditText)findViewById(R.id.name);
name.setText(“”);
clue1=(EditText)findViewById(R.id.clue1);
clue1.setText(“”);
clue2=(EditText)findViewById(R.id.clue2);
clue2.setText(“”);
clue3=(EditText)findViewById(R.id.clue3);
clue3.setText(“”);
答案=(编辑文本)findViewById(R.id.answer);
答案:setText(“”);
位置=(EditText)findViewById(R.id.location);
位置.setText(“”);
point_值=(EditText)findViewById(R.id.point_值);
point_value.setText(“”);
//如果初始xml文档不存在,则创建该文档
尝试
{
文件名=新文件(getFilesDir(),“treasure.xml”);
如果(!filename.exists())
{
myFile=openFileOutput(“treasure.xml”,Activity.MODE\u APPEND);
//创建一个新的XmlSerializer对象
serializer=Xml.newSerializer();
//使用myFile作为xml序列化程序,并设置为UTF-8编码
serializer.setOutput(myFile,“UTF-8”);

//Write我在这里看到的是将用户编写的文本中的数据保存到您的treasure.xml文件中的代码

 public void onSaveButton(View v)
哪里也不叫

当您要将用户写入的数据保存到存储器时,应该调用它。因此,您可以添加另一个调用onSaveButton()的按钮;添加OnCreate(…)方法的结尾。此外,您还可以将paremeter视图v更改为空视图,因为我看不到它的必要性:

Button saveButton = new Button(this);
saveButton.setOnClickListener(new OnClickListener(){
    @Override
    public void onClick(View v) {
        onSaveButton();
    }
});
如果要从treasure.xml读取数据,请使用文件*Input*s,而不是Outputs:

FileInputStream in = openFileInput("treasure.xml");
InputStreamReader inputStreamReader = new InputStreamReader(in);
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
StringBuilder sb = new StringBuilder();
String line;
while ((line = bufferedReader.readLine()) != null) {
    sb.append(line);
}
在while(){…}-循环中,您已将treasure.xml中的每一行读入名为line的字符串中。 所以把你想对这条线做的事情放到这个循环中。 e、 g.您可以等待字符串是否为“”,然后知道下一行将是您的EditText名称的输入,直到一行为“”,以便您可以使用


如果您只是想知道如何将数据从应用程序保存/加载到存储,并且认为可以简单地使用xml文件来保存/加载数据。您最好看看如何将数据保存/加载到内部/外部存储。(您的treasure.xml文件仅位于eclipse的项目目录中,而不在实际设备上)。

我删除了名称。设置为“”编辑文本中仍然没有任何内容或者我应该使用设置文本而不是获取文本吗?我想知道您的期望是什么。我看到了将用户写入的编辑文本中的文本写入到您的treasure.xml文件的代码。在您的应用程序运行后,这些文本是否未写入treasure.xml并在SaveButton()上写入是否已执行?您的onSaveButton()顺便说一句,没有在哪里调用。那么我如何调用我的onSaveButton?我已经在这个项目上工作了2天。如果您有什么可以帮助我的,请让我知道。如果我手动输入设置文本的数据并运行它,我可以在我的编辑文本中看到文本,这不是我想要的。我希望编辑文本从我在tea中输入的数据填充非常感谢您的帮助和努力,我将尝试一下。