# #android #firebase #kotlin
Вопрос:
Я разрабатывал приложение в Котлине, где я внедряю модернизацию Firebase и библиотеку комнат для различных целей.
Поэтому моя проблема возникает, когда я пытаюсь позвонить пользователю FirebaseUser, чтобы выполнить поиск в базе данных комнат, где сохраняется имя пользователя, и загрузить информацию о нем/ней.
Мой пользователь firebase равен нулю, независимо от того, сколько времени он ждет.
Фрагмент, в котором возникает исключение, выглядит следующим образом:
Фрагмент дневника.кт
class DiaryFragment : Fragment(R.layout.fragment_diary), AdapterDetail.OnItemClickListenerDiary{ private var _binding: FragmentDiaryBinding? = null private val binding get() = _binding!! private lateinit var user: String private lateinit var viewModel : DiaryViewModel private lateinit var mAuth : FirebaseAuth override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) FirebaseApp.initializeApp(context!!); mAuth = FirebaseAuth.getInstance(); } override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) _binding = FragmentDiaryBinding.bind(view) //TODO(Use ViewModel to recover the data.) mAuth = FirebaseAuth.getInstance(); val adapter = AdapterDetail(this) //Set the ViewModel of the DiaryFragment. //TODO(Solucionar NullPointerException) //TODO(FirebaseUser llega null ) user = mAuth.currentUser?.email.toString() checkUser(user, adapter) /*viewModel = ViewModelProvider(this)[DiaryViewModel::class.java]*/ val btnRetryDiary = binding.btnRetryDiary btnRetryDiary.setOnClickListener(View.OnClickListener { checkUser(user, adapter) }) } fun checkUser(user:String, adapter: AdapterDetail){ if(user!="null"){ Toast.makeText(context, "Already Sign in !", Toast.LENGTH_LONG).show() viewModel = DiaryViewModel(context?.applicationContext as Application, RoomUnsplashPhoto(10,"null",null,null,user)) viewModel.getPhotoUser(user)!!.observe(viewLifecycleOwner){ adapter.submitData(viewLifecycleOwner.lifecycle, it as PagingDatalt;UnsplashPhotogt;) binding.apply { recycleViewDiary.setHasFixedSize(true) recycleViewDiary.itemAnimator = null recycleViewDiary.adapter = adapter } } setHasOptionsMenu(true) }else{ Toast.makeText(context, "¡¡ User esta a null !!", Toast.LENGTH_LONG).show() } } override fun onItemClick(photo: UnsplashPhoto) { val action = DiaryFragmentDirections.actionDiaryFragmentToDetailFragment(photo) findNavController().navigate(action) } override fun onDestroy() { super.onDestroy() _binding = null } }
мое приложение build.gradle, касающееся firebase, заключается в следующем:
//Firebase implementation platform('com.google.firebase:firebase-bom:28.4.1') implementation 'com.google.firebase:firebase-auth-ktx'
Если вы можете помочь, заранее поблагодарите !
Комментарии:
1. Фрагмент, в котором возникает исключение, выглядит следующим образом. О каком именно исключении вы говорите?
2. Исключение не возникает из-за нулевой проверки пользователя FirebaseUser, который используется в качестве атрибута в базе данных моей комнаты. Проблема в том, что Firebaseauth.getInstance() всегда равен нулю
3. Вы уверены, что прошли проверку подлинности? Скорее всего, это не так, отсюда и NPE, верно?
4. Я использую 2 поставщика для аутентификации, Google и электронную почту, и оба работают нормально, даже когда я отлаживаю, пользователь правильно установил адрес электронной почты поставщика. Так что да, аутентификация работает