0

で断片で動作するようにどのように持っている3つのフラグメントにナビゲーションメニューを保持しているアクティビティ:ブルートゥース

1)ホーム(チャンネル変更や音量変更ボタン)外部と接続 2)Bluetooth接続(とbluetoothデバイス) 3)設定(シークバーがBluetoothデバイスのスケルチを変更する場所)

アプリケーションが開くと、すべてのナビゲーションボタンが個々のフラグメントを開くという点で機能します。

携帯電話の設定に移動して外部のBluetoothデバイスとのBluetooth接続を設定するBluetooth接続フラグメントに移動した後、アプリケーションはホームフラグメントに移動します。

ホームフラグメントのすべてのボタン(チャンネルと音量の変更ボタン)は、外部デバイスとのやりとりで機能します(ライトが点滅して相互作用を示します)。ただし、ボタンとやりとりした後、他のフラグメント(設定フラグメントおよびBluetoothフラグメント)へのナビゲーションボタンは機能しません(フラグメントは表示されず/プルアップされません)。

また、別のバグは、アプリケーションを開いてSettingsフラグメントに移動した場合、Homeフラグメントdo(チャネルとボリュームの変更ボタン、外部Bluetoothデバイスのライトが機能しない)うまくいかない。

UPDATE

オクラホマので、私が見つけた興味深い観察は3でスケルチボタンは)私が最初に1)ホームフラグメントに行きませんとにまっすぐに行ったんならばフラグメントはまた、作品の設定ということでした設定の断片。

私は、フラグメントの代わりにアクティビティを使用して構築したプロトタイプを試していましたが、接続を適切に閉じずにアクティビティを切り替えると、Bluetoothの接続が壊れてしまうという同様の動作を示しました。

これは、断片間を切り替えると接続が正しく閉じず、ボタンが機能しなくなる(外部デバイスが点滅しない)と考えられています。

質問 - ビューを非表示にするときに接続を閉じるにはどうすればよいですか?

ありがとうございます!

お知らせください。

答えて

0

私が説明したすべての問題を直接話すことはできませんが、これまで説明していなかったワークフローが発生した場合でも、フラグメントを使用した動作上の問題が発生しました。具体的には、フラグメントトランジションを処理するために使用しているフラグメントマネージャが、フラグメントスタック内のどこにあるのか(そしてそうでなければならないのか)、バックスタックに含めるべきアイテムについての知識が必要です。

たとえば、デバイスのローテーションが正しく処理されず、アクティビティ/フラグメントが再作成され、フラグメントスタックが乱されました。これは、UI要素が適切に応答しないなど、アプリをナビゲートするために戻るボタンを使用したり、必要がないときに表示されたりすると、奇妙になります。

フラグメントと携帯電話の設定がどのように動いているかが分かりませんが、一般的にはsavedInstanceStatesとonResultを追跡することが重要ですアクティビティの再起動。

0

私のアプリは、私が望むように動作するようになった。

私がやっていたことは、新しいフラグメントが開くたびに新しいBluetooth接続を開くことでした。私は、ビューの変更時に適切に閉じないと、それぞれの接続が互いに競合していると思われています。

私が修正したのは、アクティビティが開いたときに単一のグローバルBluetooth接続を開き、個々のフラグメントがそのBluetooth接続変数にアクセスできるようにすることでした。

ありがとうございました。

関連する問題