Android 存储文件中的数据并将其传递给新活动
下面的代码用于从edittext中获取字符串并将其存储在文件中,这仅适用于1个edittext,如果我使用了两个edittext,则它不起作用,同时我希望显示另一个活动的结果Android 存储文件中的数据并将其传递给新活动,android,android-activity,android-edittext,Android,Android Activity,Android Edittext,下面的代码用于从edittext中获取字符串并将其存储在文件中,这仅适用于1个edittext,如果我使用了两个edittext,则它不起作用,同时我希望显示另一个活动的结果 public class MainActivity extends Activity { File myInternalFile; File myExternalFile; private String filename = "MySampleFile.txt"; private Str
public class MainActivity extends Activity {
File myInternalFile;
File myExternalFile;
private String filename = "MySampleFile.txt";
private String filepath = "MyFileStorage";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
public void saveInternalHandler(View view)
{
EditText myInputText = (EditText) findViewById(R.id.myInputText);
TextView responseText = (TextView) findViewById(R.id.responseText);
ContextWrapper contextWrapper = new
ContextWrapper(getApplicationContext());
File directory = contextWrapper.getDir(filepath,
Context.MODE_PRIVATE);
myInternalFile = new File(directory , filename);
try {
FileOutputStream fos = new FileOutputStream(myInternalFile);
fos.write(myInputText.getText().toString().getBytes());
fos.close();
}
catch (IOException e) {
e.printStackTrace();
}
myInputText.setText("");
responseText.setText("MySampleFile.txt saved to Internal Storage...");
}
public void getInternalHandler(View view)
{
EditText myInputText = (EditText) findViewById(R.id.myInputText);
TextView responseText = (TextView) findViewById(R.id.responseText);
String myData = "";
try {
FileInputStream fis = new FileInputStream(myInternalFile);
DataInputStream in = new DataInputStream(fis);
BufferedReader br = new BufferedReader(new
InputStreamReader(in));
String strLine;
while ((strLine = br.readLine()) != null) {
myData = myData + strLine;
}
in.close();
}
catch (IOException e) { e.printStackTrace();
}
myInputText.setText(myData);
responseText.setText("MySampleFile.txt data retrieved from Internal Storage...");
}
}
再详细一点说明这在两个EditText中如何不起作用就好了。但我的猜测是,您发现只有第二个文本显示,这是因为当您调用
myInternalFile=新文件(目录、文件名)代码>
这是您第二次在目录中创建与旧文件同名的新文件,即您正在覆盖旧文件。您需要myInternalFile
作为全局变量
关于如何在活动之间传递数据,特别是字符串,这是一个很好的资源:
你为什么要将字符串写入一个文件,而不是使用意图或共享引用将其发送到另一个活动中?这里是最好的例子:好的,我最后使用了两个按钮,一个保存人名,另一个保存两个单独文件中的权重。现在我想在主要活动上查看这些。如何在文本视图中显示文件?对不起,我是新手。