Я встретил ту же проблему. Выбранное решение мне очень помогло, но я считаю необходимым добавить точность, чтобы сделать функциональный код вопроса: определить лямбда-функцию вне цикла. Кстати, значение по умолчанию не требуется.
foo = lambda d: lambda : self.root.change_directory(d)
for d in directorys:
self.command["cd " + d] = (foo(d))
Нашел причину. Поток создания сущности не использует startActivityForResult, но фрагменты данных передаются между действиями. И я запустил этот поток в начальном действии, используя флаги Intent.FLAG_ACTIVITY_CLEAR_TOP или Intent.FLAG_ACTIVITY_NO_HISTORY. Когда я удалил эту строку в начальном потоке, она начала работать как задумано.