2013-03-27 73 views
0

我正在努力如何使用edittext保存对我的file.txt的更改。到目前为止,我的代码将允许我打开文本文件,但是在关闭它时,它不会保存已做出的更改。该文本文件正在打开到另一个活动中,并将在方向更改时以及最小化时保存更改。我尝试了大量不同的解决方案,但我无法理解如何存储已做出的更改。如何从Edittext将信息保存到原始文件中android

public class Editor extends Activity { 
private String Text; 
private String Folder; 
private String toast; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_editor); 
    Bundle extras = getIntent().getExtras(); 
    this.Text = extras.getString ("txt"); 
    this.Folder = extras.getString("s"); 
    this.toast = (Folder + "/" + Text); 
    Toast.makeText(this, toast, Toast.LENGTH_SHORT).show(); 
    File sdcard = Environment.getExternalStorageDirectory(); 
    File file = new File(sdcard + "/NoteTaker/" + Folder + "/" + Text); 
    StringBuilder text = new StringBuilder(); 
    try { 
    BufferedReader br = new BufferedReader(new FileReader(file)); 
    String line; 
    while ((line = br.readLine()) != null) { 
    text.append(line); 
    text.append('\n'); 
    } 
    } 
    catch (IOException e) { 
    } 
    TextView tv = (TextView)findViewById(R.id.editText1); 
    tv.setText(text); 
    getActionBar().setDisplayHomeAsUpEnabled(true); 

} 

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

回答

1

如果你perfoming读操作,然后使用InputStream

如果你perfoming写操作,然后使用OuptputStream

这里是one of your solution

+0

OMG谢谢。我一直在寻找这个好几个小时,试图把它整理出来,它终于可以运作 – 2013-03-27 16:19:59

+0

它是我的荣幸。 :) – QuokMoon 2013-03-27 16:50:41

0

这可能是你在找什么:

public void onPause(){ 
    super.onPause(); 

    try{ 
     OutputStreamWriter out=new OutputStreamWriter(openFileOutput(NOTES, 0)); 

     out.write(editor.getText().toString()); 
     out.close(); 
    } 
    catch (Throwable t) { 
     Toast.makeText(this, "Exception: "+t.toString(), Toast.LENGTH_LONG).show(); 
    } 
} 

您将需要改变NOTES变量您file_name.txt并不管你的EditText的名字是编辑器。

+0

我上改变编辑得到一个错误到EditText。错误是无法对非静态线程进行静态引用。我试图创建: EditText =编辑; 在顶部并使用它,但仍然是一个错误。 – 2013-03-27 16:04:28

+0

EditText是布局上的文本框,其中包含要保存到文件中的信息,除非您没有用户输入自己的数据,在这种情况下,您将不会有EditText文本框。你定义一个EditText为:'EditText myText =(EditText)findViewById(R.id.name_of_edittext_from_layout_xml);' – TronicZomB 2013-03-27 17:04:17