如何重新创建活动

时间:2019-09-24 10:19:25

标签: android kotlin activity-lifecycle kotlin-lateinit

我有活动和片段。我得到了共同的偏好。在我的片段中:

   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)返回null。这是否意味着活动已被破坏?

如果我检查sp == null,那么我该怎么做?重新启动应用程序或重新创建活动?正确的方法是什么?

1 个答案:

答案 0 :(得分:-1)

一种解决方法是调用:

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

在片段onStart()方法中。