gpt4 book ai didi

java - 将用户输入保存到文本文件,Android Studio

转载 作者:太空狗 更新时间:2023-10-29 13:15:16 25 4
gpt4 key购买 nike

好吧,我正在尝试实现一些基本的Java知识,这些知识是通过使用Android Studio创建一个简单的应用程序而获得的。

基本上,我的应用程序会从用户那里接收一些信息,并将其保存到文本文件中,该应用程序充当接收信息的模板。

元素是;

2个文本字段,实际上是一个字段,可以选择输入字母(A,B,C等)或数字,第二个TextField仅接受数字。

6个单选按钮,用户应该并且只能选择一个,我已经将这些按钮放在一个单选组中。

4选中复选框,用户应勾选适合输入的一个或多个复选框。

2个按钮,一个保存,另一个进行编辑。

如屏幕截图所示。

到目前为止,我的代码是这样,而我的问题是,我无法弄清楚如何在Java文件中实现write命令,因为我在eclipse中学会了这样做。我想将条目保存到文本文件中,但是不确定在android studio中的写语法是什么,以及如何使用复选框和单选按钮来做到这一点?

我已经尝试过几个问题和教程,但是无法将它们放在一起,任何指导和技巧都将不胜感激。

码:

import java.io.File;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;

public class MainActivity extends AppCompatActivity {



EditText CodNum;
EditText PltNum;
RadioButton radButA;
RadioButton radButD;
RadioButton radButS;
RadioButton radButR;
RadioButton radButO;
RadioButton radButI;


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);



CodNum = (EditText) findViewById(R. id.CodNum);
PltNum = (EditText) findViewById(R. id.PltNum);
radButA = (RadioButton) findViewById(R. id.radButA);
radButD = (RadioButton) findViewById(R. id.radButD);
radButS = (RadioButton) findViewById(R. id.radButS);
radButR = (RadioButton) findViewById(R. id.radButR);
radButO = (RadioButton) findViewById(R. id.radButO);
radButI = (RadioButton) findViewById(R. id.radButI);
checkBoxMw = (CheckBox) findViewById(R. id.checkBoxMw);
checkBoxG7 = (CheckBox) findViewById(R. id.checkBoxG7);
checkBoxGw = (CheckBox) findViewById(R. id.checkBoxGw);
checkBoxF = (CheckBox) findViewById(R. id.checkBoxF);
final FileOutputStream outputStream;
String fileName = "feederTxtFile";


Button buttonS = (Button) findViewById(R. id.buttonS);
buttonS.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {

try{
outputStream = openFileOutput(fileName,CONTEXT.MOOD_PRIVATE);
outputStream.write(String.getBytes());
outputStream.close();
}catch (Exception e){
e.printStackTrace();
}

}
});

Button buttonE = (Button) findViewById(R. id.buttonE);
buttonE.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {

//Editing to text file.
}
});

好吧,所以我更正了代码,并添加了正确的语法来保存代码和数字,但是我仍然在保存正确的RadioButton和CheckBox时遇到问题,实际上我能够使其保存单选按钮,但是很奇怪消息和它的一部分,包括RadioButton id,我只想在数字旁边保存Radiobutton名称(A,D,R等),并且与复选框相同,但我不知道如何甚至处理复选框!

有人可以指导我我的RadioButton代码有什么问题以及如何保存检查框!

这是新代码:

公共类MainActivity扩展了AppCompatActivity {
private EditText entryCode;
private EditText entryNum;

private RadioGroup radioBtnGr;
private RadioButton radioButtonA;
private RadioButton radioButtonD;
private RadioButton radioButtonS;
private RadioButton radioButtonR;
private RadioButton radioButtonO;
private RadioButton radioButtonI;

private CheckBox checkBoxGw;
private CheckBox checkBoxG7;
private CheckBox checkBoxKL;
private CheckBox checkBoxFW;


View.OnClickListener checkBoxListener;

private Button buttonE;

@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
.setAction("Action", null).show();
}
});

entryAcceptance();
}

public void entryAcceptance(){

entryCode = (EditText) findViewById(R. id.entryCode);
entryNum = (EditText) findViewById(R. id.entryNum);

radioBtnGr = (RadioGroup) findViewById(R. id.RadioBtnGr);
radioButtonA = (RadioButton)findViewById(R.id.radioButtonA);
radioButtonD = (RadioButton)findViewById(R.id.radioButtonD);
radioButtonS = (RadioButton)findViewById(R.id.radioButtonS);
radioButtonR = (RadioButton)findViewById(R.id.radioButtonR);
radioButtonO = (RadioButton)findViewById(R.id.radioButtonO);
radioButtonI = (RadioButton)findViewById(R.id.radioButtonI);

checkBoxGw = (CheckBox) findViewById(R. id.checkBoxGw);
checkBoxG7 = (CheckBox) findViewById(R. id.checkBoxG7);
checkBoxKL = (CheckBox) findViewById(R. id.checkBoxKL);
checkBoxFW = (CheckBox) findViewById(R. id.checkBoxFW);


}

public void radioButtonClicked(View v)
{
int selectedCode = radioBtnGr.getCheckedRadioButtonId();
RadioButton selected = (RadioButton)findViewById(selectedCode);
toasting(selected.getText().toString());
}

public void saveLogOnClick(View view){
int selectedCodNum = radioBtnGr.getCheckedRadioButtonId();
RadioButton selected = (RadioButton)findViewById(selectedCodNum);

CheckBox selectedChBx = (CheckBox)findViewById();


String FILENAME = "entry_log.csv";
String entry = entryCode.getText().toString() + "-" +
entryNum.getText().toString() +
selected + "\n";
try {
FileOutputStream out = openFileOutput(FILENAME, Context.MODE_APPEND);
out.write(entry.getBytes());
out.close();
toasting("Entry Saved");
}catch (Exception e){
e.printStackTrace();
}
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();

//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}

return super.onOptionsItemSelected(item);
}

public void toasting(String msg){
Toast.makeText(MainActivity.this, msg, Toast.LENGTH_SHORT).show();

}

}

以及CSV文件 CSV content的内容的屏幕截图
enter image description here enter image description here

好的,因此我能够使用RadioButton正确的语法来解决此问题,以便保存它表示的字符(A,D等)。
我不得不改变这一部分:
字符串条目= entryCode.getText()。toString()+“-” +
entryNum.getText()。toString()+
选择+“\ n”;
在“选定”之前添加.getText()。toString()。并将正确的角色保存为CSV文件中选定的选定单选按钮。

但是我仍然不确定如何处理CheckBoxes ...如何保存CSV文件中选中的CheckBox的名称!

想到在某处添加if else语句并以某种方式将其保存到CSV文件中,但是我想弄清楚是否能够做到这一点以及如何做到,或者是否还有更好的方式!

会继续努力,希望有人能提出一些建议,并向我展示一种好的方法...

我仍在尝试使用以下代码获取正确的值,并且仅获取复选框的值,我只能列出复选框状态的True和False:
    public void saveLogOnClick(View view){
int selectedCodNum = radioBtnGr.getCheckedRadioButtonId();
RadioButton selected = (RadioButton)findViewById(selectedCodNum);

StringBuffer chkdbx = new StringBuffer();
chkdbx.append(checkBoxGw.isChecked());
chkdbx.append(checkBoxG7.isChecked());
chkdbx.append(checkBoxKL.isChecked());
chkdbx.append(checkBoxFW.isChecked());

String FILENAME = "entry_log.csv";
String entry = entryCode.getText().toString() + " - " +
entryNum.getText().toString() + " - " +
selected.getText().toString() +" - " + chkdbx.toString() + "\n";
try {
FileOutputStream out = openFileOutput(FILENAME, Context.MODE_APPEND);
out.write(entry.getBytes());
out.close();
toasting("Entry Saved");
}catch (Exception e){
e.printStackTrace();
}
}

我没有从以前的参与者那里获得关于此帖子的任何回复,我知道这是一个直接的问题,而且很容易解决,但是我正在学习实现新方法,而我只是通过构建这个简单的应用程序来学习。

希望我得到一些有关如何正确执行此操作的提示。

需要将选中框的值保存在CSV文件中,而不是true和false;

最后,记录“已检查”框的值的正确方法是:
       List<CheckBox>checkBoxes=new ArrayList<>();
checkBoxes.add(checkBoxGw);
checkBoxes.add(checkBoxG7);
checkBoxes.add(checkBoxKL);
checkBoxes.add(checkBoxFW);
String checkBoxText = "";

for(CheckBox checkBox: checkBoxes){
if(checkBox.isChecked()){
checkBoxText = checkBoxText + " - " + checkBox.getText().toString();
}
}

String FILENAME = "entry_log.csv";
String entry = entryCode.getText().toString() + " - " +
entryNum.getText().toString() + " - " +
selected.getText().toString() +" - " + checkBoxText + "\n";

但显然,它仅保存已选中并出现在列表中的第一个复选框,而不会越过列表的其余部分或保存多个复选框!

因此,我修复了@NickIsaacs建议的部分,即CheckBoxText +“,” + checBoxes.getText()。toString();。并且它应该已经保存了Checked Boxs,但是相反,我根本没有得到Checkboxs的任何值!

我了解到,这不仅仅是教程和问答,还应该考虑问题和答案,但是我正在学习,谢谢。

更改代码后,附加了CSV文件的屏幕截图,没有“已检查值”框?

好的,最后,一个小问题是代码中遍历了复选框列表,并列出了选中的复选框,并用“”分隔每个条目,应将其替换为“-”,因为输入所保存的文件是CSV文件。

enter image description here

enter image description here

最佳答案

           String text = editText.getText().toString();
boolean checked = radioButton.isChecked();
// do what you want with these
FileOutputStream outputStream;
try{
outputStream = openFileOutput(fileName,CONTEXT.MODE_PRIVATE);
outputStream.write(text.getBytes());
outputStream.close();
}catch (Exception e){
e.printStackTrace();
}

编辑:

创建一个复选框列表。
List<CheckBox> checkBoxes= new ArrayList<CheckBox>();
checkBoxes.add(checkBox1);

//keep adding all your checkboxes to this list
String checkBoxText = "";

for (CheckBox checkBox: checkBoxes){
if(checkBox.isChecked()){
checkBoxText= checkBoxText + "-" +checkBox.getText().toString();
//Do what you like with this
}
}

关于java - 将用户输入保存到文本文件,Android Studio,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35403315/

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