Size: a a a

Android Developers

2021 January 27

SG

Sergey Grieg in Android Developers
Sergey Grieg
Ищи нужный тебе фрагмент в backstack, как один из вариантов
Но получение экземпляра одного фрагмента в другом — не лучшее решение. Не проще ли отдавать при добавлении фрагмента ему подписчика от первого фрагмента?
источник

SG

Sergey Grieg in Android Developers
И учитывай жизненный цикл родительского фрагмента
источник

SG

Sergey Grieg in Android Developers
Maxim Maximovich
Здравствуйте. Такая штука. Пытаюсь соединиться по Bluetooth с ардуино. Делаю так: в Main Activity при нажатии на кнопку вызываю сервис (в который передаётся адрес Arduino), в сервисе идёт основная часть подключения вплоть до clientSocket.connect();
Затем через Send Broadcast шлю результат подключения в MainActivity, если успешно, то запускаю Активити с кнопками "Send 1" и "Send 0". Но если нажать на них сразу (команда "BluetoothConnectionService.clientSocket.getOutputStream().write(msgBuffer)"), то выводится ошибка broken pipe. А если подождать немного, то работает. Как понять, почему оно так себя ведёт? По идее Активити с возможностью отправки данных должно открываться только после нормального завершения сервиса...
Может я что-то не учёл в этой логике?
Проверяй сокет на готовность
источник

YB

Yuri Berezhnoy in Android Developers
Leonid
В manifest.xml стартовая Активити прописывается
спасибо
источник

SG

Sergey Grieg in Android Developers
Sergey Grieg
Проверяй сокет на готовность
Сам сокет в вечном цикле, попутно ничего не пиши и не читай: while(!socket.ready());
источник

M

Maxim Maximovich in Android Developers
Leonid
А как ты пишешь в сокет? Скорей всего ты его закрыл после 1 send
Вроде нет
источник

M

Maxim Maximovich in Android Developers
Sergey Grieg
Сам сокет в вечном цикле, попутно ничего не пиши и не читай: while(!socket.ready());
О, хорошо, спасибо, сейчас посмотрим
источник

SG

Sergey Grieg in Android Developers
Когда сокет будет готов — ты из цикла с проверкой ready выйдешь и можешь спокойно писать/читать
источник

SG

Sergey Grieg in Android Developers
После этого для записи рекомендую создать какой-нибудь PrintWriter, так удобнее
источник

SG

Sergey Grieg in Android Developers
Его легко создать от output stream
источник

M

Maxim Maximovich in Android Developers
Sergey Grieg
Когда сокет будет готов — ты из цикла с проверкой ready выйдешь и можешь спокойно писать/читать
Сейчас попробую, спасибо!
Про print writer тоже спасибо, посмотрю
источник

SG

Sergey Grieg in Android Developers
После для отправки просто вызывая outputstream.print() и потом .flush()
источник

SG

Sergey Grieg in Android Developers
ойprintWriter.print()
источник

SG

Sergey Grieg in Android Developers
А вообще — полистай доки по TCP/IP / UDP в Java, там очень многое сделано из коробки и довольно удобно
источник

M

Maxim Maximovich in Android Developers
Sergey Grieg
А вообще — полистай доки по TCP/IP / UDP в Java, там очень многое сделано из коробки и довольно удобно
Ладно, спасибо, теперь мне этого надолго хватит изучения
источник

V

Valery in Android Developers
Sergey Grieg
Но получение экземпляра одного фрагмента в другом — не лучшее решение. Не проще ли отдавать при добавлении фрагмента ему подписчика от первого фрагмента?
а как? Если я фрагмент добавляю путём <fragment> тэга в другом фрагменте
источник

SG

Sergey Grieg in Android Developers
Valery
а как? Если я фрагмент добавляю путём <fragment> тэга в другом фрагменте
А зачем ты так добавляешь фрагмент?
источник

SG

Sergey Grieg in Android Developers
Есть FrameLayout — туда и добавляй
источник

SG

Sergey Grieg in Android Developers
Он для этого и заточен — его очень часто как хоста используют для фрагментов
источник

SG

Sergey Grieg in Android Developers
И из него же можешь вытащить нужный спокойно
источник