Это самый простой взлом:
fun getCurrentFragment(): Fragment? {
return if (count == 0) null
else instantiateItem(view_pager, view_pager.currentItem) as? Fragment
}
(код kotlin)
Просто вызовите instantiateItem(viewPager, viewPager.getCurrentItem()
и переведите его в Fragment
. Ваш объект уже будет создан. Чтобы убедиться, что вы можете добавить проверку для getCount
.
Работает как с FragmentPagerAdapter
, так и с FragmentStatePagerAdapter
!
Большое спасибо - это сработало. (Так глупо с моей стороны ...)
Ваш файл пуст во время работы программы:
fd = open(file_name,"w")
fd.write("#!/usr/local/bin/tcsh -f\n")
fd.write("echo 'PRINT FROM CMD_FILE_FROM_PYTHON'\n")
fd.close
Обратите внимание на отсутствие паренсов вызовов на fd.close
; вы на самом деле никогда не закрывали файл, поэтому, скорее всего, все содержимое файла находилось в буфере Python и никогда не попадало на диск до тех пор, пока программа не закончилась (когда ссылочный интерпретатор CPython, как деталь реализации, проходит и очищает глобальные переменные, закрывая открытые файлы для вас побочным эффектом, он может никогда не достигнуть диска в другом интерпретаторе).
Чтобы исправить, на самом деле позвоните close
. Или, что еще лучше, переключитесь на более безопасный подход with
к выражению , где close
является неявным и автоматическим, происходит даже в том случае, если исключение или return
заставляет вас досрочно выйти из кода: [ 1110]
with open(file_name, "w") as fd:
fd.write("#!/usr/local/bin/tcsh -f\n")
fd.write("echo 'PRINT FROM CMD_FILE_FROM_PYTHON'\n")
# No need to call close; file is guaranteed closed when you exit with block