最近、Firebaseを使ったアプリを開発中です。(ボードゲームアプリです)
実は、FragmentActivity?のactivityが、フラグメントが削除されてないにもかかわらずnullになる時があります。(ブレークポイントで確認済みなのでnullになってるのは確かです)
Fragmentが開いている状態で、このようなことが起こることがあるのでしょうか?コードを載せようにも、全て載せるには多すぎて載せれず、絞って載せるにもどこを載せればいいのかわからないので、GitHubリンクを載せておきます。問題の箇所はGameSettingFragmentのsetSpinnerメソッドです。バリバリの初心者なのでコード読みにくかったらすみません。
GitHub
毎回必ずしもnullになるというわけでなく、ある条件下でなります。
①ルームを新しく作成し(SetRoomInfoFragmentにて)、(WaitingMembersFragmentを通り)GameSetting画面で最初にチーム分けをするとき
チーム分けをする前はmember情報がnameしかない。チーム分けした後にmember情報がhost,team,name,vote(null)と増える。エラーで強制終了させられても、チーム分けはされており(member情報がfirebaseに保存される)、再度アプリを立ち上げ、参加者としてGameSettingFragment画面まで進むと、エラーは起きない。
問題があった箇所(GameSettingFragment)だけ載せます。他はGitHubを参照していただくとありがたいです。
private fun setSpinner(teamRed: MutableList<Uid>, teamBlue: MutableList<Uid>) { . . . adapter= // activityがnull -> adapterもnullになり強制クローズ when (isMyTeam) { Team.RED -> ArrayAdapter(activity!!.baseContext, R.layout.spiner_item, teamRedNameList) Team.BLUE -> ArrayAdapter(activity!!.baseContext, R.layout.spiner_item, teamBlueNameList) } adapter?.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item) spinner.adapter = adapter . . . }
回答1件
あなたの回答
tips
プレビュー