为了账号安全,请及时绑定邮箱和手机立即绑定

EditView 只显示文本文件的最后一行

EditView 只显示文本文件的最后一行

Qyouu 2023-04-26 15:07:06
我的应用程序将多行文本保存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());

希望这能解决您的问题。


查看完整回答
反对 回复 2023-04-26
  • 1 回答
  • 0 关注
  • 76 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信