好的,所以我正在开发我的第一个Android应用程序。原谅我,如果这听起来很幼稚,因为我在这方面有点新,但我使用以下代码从6个不同的.txt文件中读取到
private void displayFiles(int path) {
TextView text = (TextView) findViewById(R.id.text);
ImageView display = (ImageView) findViewById(R.id.head_image);
String line = "";
StringBuilder finalString = new StringBuilder();
InputStream iStream = null;
if (path == 0) {
iStream = getResources().openRawResource(R.raw.salm);
display.setImageResource(R.drawable.salm);
} else if (path == 1) {
iStream = getResources().openRawResource(R.raw.lyme);
display.setImageResource(R.drawable.lyme);
} else if (path == 2) {
iStream = getResources().openRawResource(R.raw.pox);
display.setImageResource(R.drawable.pox);
} else if (path == 3) {
iStream = getResources().openRawResource(R.raw.shig);
display.setImageResource(R.drawable.shig);
} else if (path == 4) {
iStream = getResources().openRawResource(R.raw.gia);
display.setImageResource(R.drawable.gia);
} else if (path == 5) {
iStream = getResources().openRawResource(R.raw.intro);
display.setImageResource(R.drawable.intro);
} else {
Toast.makeText(this, "Something went wrong! Please refresh EpiQuick.", Toast.LENGTH_SHORT).show();
return;
}
BufferedReader bReader = new BufferedReader(new InputStreamReader(iStream));
try {
while ((line = bReader.readLine()) != null) {
finalString.append(line);
}
} catch (IOException e) {
e.printStackTrace();
}
text.setText(finalString);
}
相应的xml:
<TextView
android:id="@+id/text"
style="@style/body"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/head_image"
android:layout_marginBottom="16dp"
/>
<style name="body">
<item name="android:fontFamily">sans-serif-light</item>
<item name="android:textSize">14sp</item>
<item name="android:textColor">#000000</item>
</style>
文本样本如下:
有风险的人: 前往贾第虫病常见国家的游客 育儿环境中的人们 与患有该疾病的人密切接触的人 吞下受污染饮用水的人 从湖泊或河流中饮用未经处理的水的背包客或露营者 与患有该疾病的动物接触的人 与男人发生性关系的男人
然而,当我在调用所有新行字符后运行应用程序时消失。如果有办法解决这个问题我真的很感激吗?如果是这样的话?
答案 0 :(得分:0)
BufferedReader的 readLine 方法会跳过行终止字符(docs)。由于您只是将其显示在TextView上,因此您只需手动附加换行符:
BufferedReader bReader = new BufferedReader(new InputStreamReader(iStream));
try {
while ((line = bReader.readLine()) != null) {
finalString.append(line);
finalString.append("\n");
}
} catch (IOException e) {
e.printStackTrace();
}
注意:不确定它是否在代码的某些部分,但请务必在使用后关闭 bReader 。
答案 1 :(得分:0)
我认为readLine()不包括读取行末尾的新行字符,因此您必须明确添加它。
while ((line = bReader.readLine()) != null) {
finalString.append(line);
finalString.append('\n');
}