猿问

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

我的应用程序将多行文本保存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;


@Override

protected 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");

            }

        }

    });


完全希望你能帮助我 :) 谢谢!


Qyouu
浏览 101回答 1
1回答

慕勒3428872

做就是了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());希望这能解决您的问题。
随时随地看视频慕课网APP

相关分类

Java
我要回答