簡體   English   中英

Android Studio Java 換行顯示文本文件內容

[英]Android Studio Java display text file contents in new lines

我正在創建一個體重跟蹤應用程序,用戶輸入他們的體重點擊保存按鈕,然后保存體重。 還有一個加載按鈕可以加載所有以前的輸入。 我遇到的問題是,一旦單擊加載,它確實會在屏幕上加載權重,但它會在一行中完成所有操作,而不是每個單獨的行。

我檢查了文本文件,所有權重都存儲在一行中,因此存儲輸入的 function 沒有問題。

這是`重量跟蹤器的代碼

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();
                }
            }
        }
    }
}

有人知道如何讓它逐行加載每個重量嗎? 謝謝

`

你能檢查你的 xml 文件,如果你在編輯文本上添加了屬性android:inputType="textMultiLine"

嘗試像這樣更改您的代碼:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM