我可以使用toString连接吗?

时间:2013-09-06 18:00:02

标签: android tostring concat

我正在尝试在将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();
    }
}

这不起作用,它仍然在同一条线上。怎么办?

3 个答案:

答案 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");

无论如何,谢谢你的帮助!