Проблема со сравнением существующей строки с Environment.getExternalStorageDirectory (). GetPath ()

В настоящее время я пишу приложение для Android, которое использует навигацию по папкам. У меня пользователь начинает в

String rootPath = Environment.getExternalStorageDirectory().getPath()

а также строка currentPath, которая отслеживает каталог, в котором в данный момент находится пользователь.

и пользователь может легко перемещаться по подпапкам и возвращаться в корневую папку.

Однако программа, похоже, продолжает пытаться перемещаться ниже начальной строки rootPath. Это означает, что мой оператор if для if (currentPath != rootPath) { похоже, вообще не работает. Как я могу это исправить?

У меня сейчас программа работает только потому, что у меня есть блок try catch для кода после этого оператора if, который не запускается должным образом.

Кроме того, я настроил сообщения Logcat, чтобы показать, что такое текущий каталог, и он явно такой же, как и при инициализации программы, так почему же он не равен строке rootPath, созданной при инициализации программы?

Возможный дубликат stackoverflow.com/questions/7520432/…

Ghulam Moinul Quadir 28.05.2018 15:43
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
1
27
1

Ответы 1

Не используйте

if (currentPath != rootPath) {

для сравнения строк.

Вы должны использовать равно:

if ( ! currentPath.equals(rootPath)) {

Оператор! = сравнивает адреса строковых объектов. equals сравнивает содержимое строк ...

см. https://www.leepoint.net/data/expressions/22compareobjects.html

Ах, это многое объясняет. Просто попробовал без обработки исключений, и, похоже, это исправило.

user2032396 28.05.2018 15:57

Другие вопросы по теме