【问题标题】:Android Studio Java display text file contents in new linesAndroid Studio Java 在新行中显示文本文件内容
【发布时间】:2021-08-09 13:53:27
【问题描述】:

我正在创建一个体重跟踪应用程序,用户在其中输入他们的体重,然后单击保存按钮,然后保存体重。还有一个加载按钮可以加载所有以前的输入。我遇到的问题是,一旦单击加载,它确实会在屏幕上加载权重,但它会在一行中完成所有操作,而不是每个单独的行。

我检查了文本文件,所有权重都存储在一行中,因此存储输入的函数没有问题。

这是`体重跟踪器的代码

package com.example.workouttracker;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

public class WeightTracking extends AppCompatActivity {
    private static final String FILE_NAME = "WeightTracking.txt";


    EditText mEditText;
    EditText mEditText2;
    private Button button_back_home;



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

        mEditText = findViewById(R.id.weight);
        mEditText2 = findViewById(R.id.weight2);

        button_back_home=(Button) findViewById(R.id.button_back_home);
        button_back_home.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                homePage();
            }
            private void homePage(){
                startActivity(new Intent(getApplicationContext(),MainActivity.class).setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP));
            }
        });

    }
    public void save(View v) {
        String text = mEditText.getText().toString();
        FileOutputStream fos = null;

        try {
            fos = openFileOutput(FILE_NAME, MODE_APPEND);
            fos.write((text + "kg's\n").getBytes());


            mEditText.getText().clear();
            Toast.makeText(this, "Saved to " + getFilesDir() + "/" + FILE_NAME,
                    Toast.LENGTH_LONG).show();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (fos != null) {
                try {
                    fos.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
    public void load(View v) {
        FileInputStream fis = null;
        try {
            fis = openFileInput(FILE_NAME);
            InputStreamReader isr = new InputStreamReader(fis);
            BufferedReader br = new BufferedReader(isr);
            StringBuilder sb = new StringBuilder();
            String text;
            while ((text = br.readLine()) != null) {
                sb.append(text);
                sb.append('\n');
            }
            mEditText2.setText(sb.toString());
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (fis != null) {
                try {
                    fis.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

有人知道如何让它逐行加载每个重量吗? 谢谢

`

【问题讨论】:

  • 我不是 Android 开发人员,所以我不能确定 Android 使用什么来定义换行符,但 \n 可能不是正确的。如果是 HTML,您必须使用 <br/>,也许这也是 Android 想要的。如果没有,我会让你参考文档。另请注意,在这里使用 Google 时,我得到的印象是 EditText 也需要为多行文本设置,因此也可能会丢失。

标签: java android-studio mobile append text-files


【解决方案1】:

尝试像这样更改您的代码:

String sb = "";
String text;
while ((text = br.readLine()) != null) {
    sb = sb + text + "\n";
}

【讨论】:

    【解决方案2】:

    如果您在编辑文本中添加了属性 android:inputType="textMultiLine",请检查您的 xml 文件

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-05
      • 1970-01-01
      • 2013-03-20
      • 1970-01-01
      • 2015-03-31
      相关资源
      最近更新 更多