我正在尝试在将TextView转换为字符串的同时向字符串添加新行(“\ n”)。当用户单击“保存名称”按钮时,它会添加一个在TextView中生成并显示的名称。然后他可以选择生成另一个名称并再次单击“保存”。当我稍后显示保存的名称时,我希望它们在单独的行上,而不是在彼此之后。 这是我的代码:
/** Called when the user clicks the Save Name button */
public void save_name(View view) {
String filename = "saved_names.txt";
TextView inputName = (TextView) findViewById(R.id.tViewName);
String name = inputName.getText().toString().concat("\n");
FileOutputStream outputStream;
try {
outputStream = openFileOutput(filename, Context.MODE_APPEND);
outputStream.write(name.getBytes());
outputStream.close();
} catch (Exception e) {
e.printStackTrace();
}
}
这不起作用,它仍然在同一条线上。怎么办?
答案 0 :(得分:0)
如果您要将文件写入文件并将其重新读入,则可能需要使用\r\n
(回车,换行符)而不只是\n
。
答案 1 :(得分:0)
首先,将TextView设置为禁用singeLine模式。默认情况下,TextViews将singleLine设置为true。
<TextView
android:id="@+id/myTextView"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:singleLine="false" />
其次,您实际上并未设置TextView的内容;您只需获取当前内容并向该String对象(而不是TextView)添加换行符。
你想要的是:
TextView inputName = (TextView) findViewById(R.id.tViewName);
String name = inputName.getText().toString().concat("\n");
inputName.setText(name);
您可能还需要考虑使用ListView作为名称列表,因为它们为添加,删除和样式化项目提供了更好的支持
答案 2 :(得分:0)
我自己找到了答案。上面的代码是正确的:
/** Called when the user clicks the Save Name button */
public void save_name(View view) {
String filename = "saved_names.txt";
TextView inputName = (TextView) findViewById(R.id.tViewName);
String name = inputName.getText().toString().concat("\n");
FileOutputStream outputStream;
try {
outputStream = openFileOutput(filename, Context.MODE_APPEND);
outputStream.write(name.getBytes());
outputStream.close();
} catch (Exception e) {
e.printStackTrace();
}
}
但我还需要在我从文件中读取的代码中添加“\ n”以显示名称:
private String readFromFile() {
String ret = "";
try {
InputStream inputStream = openFileInput("saved_names.txt");
if ( inputStream != null ) {
InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
String receiveString = "";
StringBuilder stringBuilder = new StringBuilder();
while ( (receiveString = bufferedReader.readLine()) != null ) {
stringBuilder.append(receiveString + "\n");
}
inputStream.close();
ret = stringBuilder.toString();
}
}
catch (FileNotFoundException e) {
Log.e(TAG, "File not found: " + e.toString());
} catch (IOException e) {
Log.e(TAG, "Can not read file: " + e.toString());
}
return ret;
}
在这一行:stringBuilder.append(receiveString + "\n");
无论如何,谢谢你的帮助!