gpt4 book ai didi

java - 按钮在我试图创建的 android 基本应用程序中不起作用

转载 作者:行者123 更新时间:2023-12-01 21:27:03 25 4
gpt4 key购买 nike

我的第一个应用程序遇到问题。当我单击“提交”时,它意味着使用用户输入的值创建一个文本文件,但它并没有创建它。我不确定问题是什么。

我还想知道是否有更好的方法来存储用户输入的数据,以便最终在 Excel 电子表格中使用。或者只是使用纯文本文件来简化操作?

package com.example.mybodyrecord;

import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

import androidx.appcompat.app.AppCompatActivity;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class MainActivity extends AppCompatActivity {

String myBodyRecord = "My_Body_Record.txt";
Date date = new Date();
SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yyyy HH:mm");
File file; // declare here and initialize inside onCreate.

Button button;

EditText weightInput;
EditText ketoneBloodInput;
EditText ketoneUrineInput;
EditText bloodPressureInput;
EditText bloodSugarInput;

String weight;
String ketoneBlood;
String ketoneUrine;
String bloodPressure;
String bloodSugar;


protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

//Setting where to get the data from, ie what fields
weightInput = findViewById(R.id.weight);
ketoneBloodInput = findViewById(R.id.ketoneblood);
ketoneUrineInput = findViewById(R.id.ketoneurine);
bloodPressureInput = findViewById(R.id.bp);
bloodSugarInput = findViewById(R.id.bslvl);

button = findViewById(R.id.submit);

//activity has a context now you can use getApplicationContext or this
file = new File(this.getFilesDir(),myBodyRecord);

button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
FileOutputStream fos = null;

//Taking input from the fields
weight = weightInput.getText().toString() +"kg";
ketoneBlood = ketoneBloodInput.getText().toString() +"mmol/L";
ketoneUrine = ketoneUrineInput.getText().toString();
bloodPressure = bloodPressureInput.getText().toString() +"mmHg";
bloodSugar = bloodSugarInput.getText().toString() +"mmol/L";

//Save to the file, with the date and time
if (file.exists()) {
try {
fos = openFileOutput(myBodyRecord, getApplicationContext().MODE_APPEND);
fos.write("\n\r".getBytes());
fos.write(formatter.format(date).getBytes());
fos.write(weight.getBytes());
fos.write(ketoneBlood.getBytes());
fos.write(ketoneUrine.getBytes());
fos.write(bloodPressure.getBytes());
fos.write(bloodSugar.getBytes());

} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
finally {
try {
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
else {
try {
fos = openFileOutput(myBodyRecord, getApplicationContext().MODE_PRIVATE);
fos.write("\n\r".getBytes());
fos.write(formatter.format(date).getBytes());
fos.write(weight.getBytes());
fos.write(ketoneBlood.getBytes());
fos.write(ketoneUrine.getBytes());
fos.write(bloodPressure.getBytes());
fos.write(bloodSugar.getBytes());

} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
finally {
try {
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
});
}
}

最佳答案

柯林斯

如何在 Android 中读取/写入文本文件的问题已在此线程中得到解答:

How can I read a text file in Android?

但是,这并不是您在 Android 中想要的。首先,您应该熟悉应用程序和服务的概念。然后,解决您的问题:
- 对于少量数据(例如设置),您可以使用 SharedPreferences。
- 对于更多数据(例如记录),推荐的方法是使用 SQLite 数据库的 ContentProvider。

关于java - 按钮在我试图创建的 android 基本应用程序中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58826816/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com