Как воссоздать активность - PullRequest
       48

Как воссоздать активность

0 голосов
/ 24 сентября 2019

У меня есть активность и фрагмент.Я получаю общий прив.в моем фрагменте:

   private var dManager: DataManager?=null
   private lateinit var sp: SharedPreferences
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
                          savedInstanceState: Bundle?): View?{
    val view = inflater.inflate(R.layout.fragment_test1_new_design, container, false)
    level = arguments!![Constants.LEVEL].toString()
    sp = activity!!.getSharedPreferences(Constants.APP_PREFERENCES, AppCompatActivity.MODE_PRIVATE)
    dManager = MyApp.gManager.getDataManager(sp,level,test)

И иногда я получаю сообщение о сбое, что

lateinit property sp has not been initialized

Я не использую sp перед инициализацией, поэтому это означает, что activity!!.getSharedPreferences(Constants.APP_PREFERENCES, AppCompatActivity.MODE_PRIVATE) возвращает ноль.Значит ли это, что деятельность была разрушена?

Если я проверю, что sp == null, что мне делать дальше во фрагменте?Перезапустить приложение или восстановить активность?Какой правильный путь?

1 Ответ

0 голосов
/ 24 сентября 2019

Один из способов решить эту проблему - вызвать:

if(!::sp.isInitialized) {
    sp = activity!!.getSharedPreferences(Constants.APP_PREFERENCES, AppCompatActivity.MODE_PRIVATE)
    dManager = MyApp.gManager.getDataManager(sp,level,test)
}

В методе фрагмента onStart ().

...