Nó phải là câu hỏi ngu ngốc, nhưng tôi thực sự mới với Kotlin và tôi không tìm thấy bất kỳ giải pháp nào.Tài sản phải được khởi tạo hoặc trừu tượng
Làm cách nào để khai báo trường lớp? Giống như chúng ta có thể có nó trong java:
protected SharedPreferences mSharedPreferences;
Và sau này trong onCreate()
:
mSharedPreferences = PreferenceManager.getDefaultSharedPreferences(this)
Bây giờ tôi có thể sử dụng nó bất cứ nơi nào tôi muốn (trong lớp con của hoạt động cơ sở này).
Tôi cố gắng làm tương tự trong Kotlin:
protected var sharedPreferences : SharedPreferences
Và trong onCreate()
:
sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this)
Nhưng tôi nhận được một cảnh báo: "Tài sản phải được khởi tạo hoặc được trừu tượng"
Tôi cố gắng để sử dụng "sharedPreferences var bảo vệ: SharedPreferences? = Null "và nó cũng hoạt động, sự khác biệt là gì? –
Tôi thấy rằng nếu tôi sử dụng Dagger2 cho DI, tôi phải sử dụng biến thể của bạn, phải không? –
Sự khác biệt là bạn có thể khai báo các giá trị không nullable với lateinit. –