我的应用程序将多行文本保存EditView到一个文本文件中,但问题是如果我重新启动我的应用程序,只会恢复最后一行。(也许也有可能是FileOutputStreamonly保存了最后一行,我不确定¯_(ツ)_/¯)这是我的代码:private static final String TAG = "EditDataActivity";public static String Textfile = "test.txt";private Button btnSave,btnDelete;private EditText editable_item;EditText Zutaten, Zubereitung;DatabaseHelper mDatabaseHelper;private String selectedName;private int selectedID;@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.edit_data_layout); btnSave = (Button) findViewById(R.id.btnSave); btnDelete = (Button) findViewById(R.id.btnDelete); editable_item = (EditText) findViewById(R.id.editable_item); mDatabaseHelper = new DatabaseHelper(this); Zutaten = (EditText)findViewById(R.id.editText4); Zubereitung = (EditText)findViewById(R.id.editText2); Zutaten.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { } @Override public void afterTextChanged(Editable s) { try{ EditText test = (EditText)findViewById(R.id.editable_item); String testText = test.getText().toString(); String Textfile2 = testText + ".txt"; EditText field = (EditText)findViewById(R.id.editText4); String text = field.getText().toString(); FileOutputStream fos = openFileOutput(Textfile2, Context.MODE_PRIVATE); fos.write(text.getBytes()); fos.close(); }catch (IOException e){ System.out.println("Error"); } } });完全希望你能帮助我 :) 谢谢!
1 回答
慕勒3428872
TA贡献1848条经验 获得超6个赞
做就是了
while ((test = reader.readLine()) != null) { Test.setText(Test.getText()+"\n" + test); }
当你只有 setText(test) 时,它会在每次循环运行时替换编辑文本中的文本,但你必须将新文本附加到最后一行。更好的方法是先创建 String,然后将其设置为 EditText,因为这样可以提高性能。
StringBuilder str = new StringBuilder(); while((test = reader.readLine()) != null) str.append('\n' + test); Test.setText(str.toString());
希望这能解决您的问题。
添加回答
举报
0/150
提交
取消