如果!不为StringBuilder android工作
我的代码读取一个.txt文件并检查其中是否没有“yoloswag”。如果没有,则在对话框中显示字符串如果!不为StringBuilder android工作,android,Android,我的代码读取一个.txt文件并检查其中是否没有“yoloswag”。如果没有,则在对话框中显示字符串 private void display() { File sdcard = Environment.getExternalStorageDirectory(); File file = new File(sdcard, "broadcast.txt"); StringBuilder text = new StringBuilder(); try {
private void display() {
File sdcard = Environment.getExternalStorageDirectory();
File file = new File(sdcard, "broadcast.txt");
StringBuilder text = new StringBuilder();
try {
BufferedReader br = new BufferedReader(new FileReader(file));
String line;
while ((line = br.readLine()) != null) {
text.append(line);
text.append('\n');
}
br.close();
} catch (IOException e) {
}
if (!text.equals("yoloswag")) {
AlertDialog alertDialog = new AlertDialog.Builder(this)
.setTitle("BROADCAST").setMessage(text).create();
alertDialog.getWindow().setType(
WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
alertDialog.show();
} else {
// don't show
}
}
但问题是,无论.txt文件中是否包含“yoloswag”,它总是显示对话框。我哪里错了???它将始终为false,因为您需要在StringBuilder上调用toString()方法
if (!text.toString().equals("yoloswag"))
此外,对于您正在阅读的每一行,您都会在末尾添加一个“\n”,因此,即使文件包含“yoloswag”,您生成的StringBuilder也会是“yoloswag\n”,这就是它们永远不相等的原因。好了
String result = text.toString();
if (!result.contains("yoloswag")) {
AlertDialog alertDialog = new AlertDialog.Builder(this)
.setTitle("BROADCAST")
.setMessage(text).create();alertDialog.getWindow().setType( WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
alertDialog.show();
} else {
// don't show
}
很高兴这有帮助。如果答案解决了你的问题,就接受它problem@joey那么你并没有按照预期的方式使用SO。不过,接受哪个答案取决于你自己。一般来说,这应该是最有用的答案。