从内部存储中读取数据

时间:2017-10-03 12:57:51

标签: java android mobile storage internal

我正在使用Android Studio中的Java为我正在进行展示位置的业务创建一个移动应用。尝试使用内部存储器存储数据时遇到了问题。

基本上,一旦用户点击“开始”按钮,我希望将用户在幕后的选择保存到文件中,然后在下一个屏幕上检索存储的选择。

以下是我将数据写入文件的代码(似乎正在运行):

            int spinnerSelection = myspinner.getSelectedItemPosition();
            int spinnerSelection2 = myspinner2.getSelectedItemPosition();
            String q = quantity.getText().toString();
            String d = duration.getText().toString();
            String formattedtime = fmt.print(dateTime);
            TextView endtime = findViewById(endtimetextView);


            String file_name = "Records.txt";
            File file = null;
            FileOutputStream fileOutputStream = null;
            try {
                file = getFilesDir();
                fileOutputStream = openFileOutput(file_name, MODE_PRIVATE);

                fileOutputStream.write(spinnerSelection);
                fileOutputStream.write(spinnerSelection2);
                fileOutputStream.write(q.getBytes());
                fileOutputStream.write(d.getBytes());
                fileOutputStream.write(endtimecalc.getBytes());
                fileOutputStream.write(formattedtime.getBytes());

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

            Toast.makeText(screen2.this, "SUCESSFULLY SAVED TO " + file, Toast.LENGTH_SHORT).show();

        }
    });

如果我需要更改任何此代码,请告诉我(特别是我不确定这是否是保存已选择的微调器值的正确方法)。

现在,为了将数据读入下一个屏幕,我刚刚关注了一些不同的youtube教程,但没有一个能够解决。

以下是我尝试的一些代码:

TextView DisplaySaved;

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

    DisplaySaved = (TextView) findViewById(R.id.textView2);
}


public void read (View view) {

    try {
        FileInputStream fileInputStream = openFileInput("Record.txt");
        InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream);
        BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
        StringBuffer buffer = new StringBuffer();
        String lines;

        while ((lines = bufferedReader.readLine()) !=null) {
            buffer.append(lines+"\n");
        }

        DisplaySaved.setText(buffer.toString());

    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
}
}

另外,有没有人知道如何每次创建一条新记录而不是每次都覆盖同一个文件?我只需要在每次创建记录时存储

如果有人能帮我解决这个问题,那就太棒了。

谢谢!

2 个答案:

答案 0 :(得分:1)

我不知道您是否绝对需要使用文件来存储此信息,但还有很多其他方法可以将信息传递给使用Android Studio的新活动。

您应该检查Intent课程,您可以发送包含您数据的捆绑包!

答案 1 :(得分:1)

您需要使用intent通过以下活动示例传递数据:

 Intent intent = new Intent(v.getContext(), SignoutActivity.class);
 intent.putExtra("EXTRA_SESSION_ID", sessionId); //putExtra method used to 
send data between activities
 startActivity(intent); //starts activity

Extra_SESSION_ID是您声明的密钥,sessionId是您要传递的值。

然后在第二个活动中使用:

String s = getIntent().getStringExtra("EXTRA_SESSION_ID");

使用getIntent()获取意图和getStringExtra(..)方法以获取第二个活动中的值。