我正在使用API 22开发Android应用,并且尝试使用SearchView在目录中查找txt文件,有什么方法可以做到这一点?不需要花哨的东西,又快又脏又好。和我在一起。
我尝试摆弄代码中的值,但是除了logcat中一些奇怪的消息外,它始终不执行任何操作。
public void onButtonClick(View view) {
Intent intent;
Boolean isFound = false;
if (isExternalStorageReadable() && seeker.toString() != "") {
for (int i = 0; i < holder.length; i++) {
if (holder[i].getName() == seeker.getQuery().toString() + ".txt") {
file2 = holder[i];
Log.i("Hey","found it!");
isFound = true;
continue;
}
}
if (isFound) {
switch (view.getId()) {
case R.id.singleDelete:
file2.delete();
holder = directory.listFiles();
if(holder.length == 0) {
intent = new Intent(this, MainActivity.class);
startActivity(intent);
finish();
}
break;
case R.id.load:
try {
Log.i("Hey","it's working more!");
intent = new Intent(this, RollerActivity.class);
FileReader fileReader = new FileReader(file2);
BufferedReader bufferedReader = new BufferedReader(fileReader);
str = "";
List<String> objects = new ArrayList<>();
while ((str = bufferedReader.readLine()) != null) {
objects.add(str);
}
intent.putExtra("name", seeker.toString());
intent.putExtra("hit", Integer.parseInt(objects.get(0)));
intent.putExtra("dmg", Integer.parseInt(objects.get(1)));
intent.putExtra("dice", Integer.parseInt(objects.get(2)));
intent.putExtra("spinner", Integer.parseInt(objects.get(3)));
startActivity(intent);
finish();
} catch (Exception e) {
e.printStackTrace();
}
break;
}
}
}
}
编辑:我已将包含的代码减少到仅遇到问题的部分,应使事情减少混乱 编辑2:我还应注意,每当我按下按钮时,Logcat中就会弹出消息“ mSecurityInputMethodService为null”,这意味着什么吗? (是的,我正在使用华为手机)
答案 0 :(得分:0)
File#listFiles()
返回目录中的文件(如果有问题的文件是目录)。
您可以从那里解析文件名,找到想要的文件名。
如果这不是您的意思,请向下编辑代码以仅显示相关代码。粘贴整个课程变得很难看。
答案 1 :(得分:0)
我了解到我的问题实际上与字符串比较有关。看来我使用C ++和C#已有很长时间了。
答案 2 :(得分:0)
尝试更改
if (holder[i].getName() == seeker.getQuery().toString() + ".txt")
到
if (holder[i].getName().equals ( seeker.getQuery().toString() + ".txt"))
在Java中,使用==
比较字符串将检查两个字符串是否引用内存中的同一字符串对象。
例如
String message1 = "Hello"
String message2 = "Hello"
if (message1 == message2)
因为我们正在比较两个不同的对象,所以它将始终返回false。
使用String.equals()
比较字符串将比较字符串的实际内容。