В настоящее время я пишу приложение для Android, которое использует навигацию по папкам. У меня пользователь начинает в
String rootPath = Environment.getExternalStorageDirectory().getPath()
а также строка currentPath, которая отслеживает каталог, в котором в данный момент находится пользователь.
и пользователь может легко перемещаться по подпапкам и возвращаться в корневую папку.
Однако программа, похоже, продолжает пытаться перемещаться ниже начальной строки rootPath. Это означает, что мой оператор if для
if (currentPath != rootPath) {
похоже, вообще не работает. Как я могу это исправить?
У меня сейчас программа работает только потому, что у меня есть блок try catch для кода после этого оператора if, который не запускается должным образом.
Кроме того, я настроил сообщения Logcat, чтобы показать, что такое текущий каталог, и он явно такой же, как и при инициализации программы, так почему же он не равен строке rootPath, созданной при инициализации программы?




Не используйте
if (currentPath != rootPath) {
для сравнения строк.
Вы должны использовать равно:
if ( ! currentPath.equals(rootPath)) {
Оператор! = сравнивает адреса строковых объектов. equals сравнивает содержимое строк ...
см. https://www.leepoint.net/data/expressions/22compareobjects.html
Ах, это многое объясняет. Просто попробовал без обработки исключений, и, похоже, это исправило.
Возможный дубликат stackoverflow.com/questions/7520432/…