Я совершенно новичок в Kotlin & Android Studio.
У меня есть объект RetrofitClient, с которого я пытаюсь импортировать общие настройки для URL, имени пользователя и т. Д. Однако я пытаюсь заставить его работать
import okhttp3.OkHttpClient
import retrofit2.Retrofit
import retrofit2.converter.gson.GsonConverterFactory
object RetrofitClient {
private val AUTH = "Basic " + Base64.encodeToString("A1122334".toByteArray(),Base64.NO_WRAP)
private const val BASE_URL = "http://192.168.2.5:3001/"
private val okHttpClient = OkHttpClient.Builder()
.addInterceptor { chain ->
val original = chain.request()
val requestBuilder = original.newBuilder()
.addHeader("Authorization", AUTH)
.method(original.method(),original.body())
val request = requestBuilder.build()
chain.proceed(request)
}.build()
val httpinstance: httpApi by lazy{
val retrofit = Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.client(okHttpClient)
.build()
retrofit.create(httpApi::class.java)
}
}
Сохраненные настройки Класс:
import android.content.Context
class LoginSavedPreferences(context: Context) {
private val sharedPreferences = context.getSharedPreferences("LoginPreferences",0)
// Save Boolean
fun saveBooleanPref(key: String, value: Boolean) {
sharedPreferences.edit().putBoolean(key,value).apply()
}
// get Boolean
fun getBooleanPref(key: String): Boolean {
return sharedPreferences.getBoolean(key,false)
}
// Save String
fun saveStringPref(key: String, value: String) {
sharedPreferences.edit().putString(key,value).apply()
}
// get String
fun getStringPref(key: String): String? {
return sharedPreferences.getString(key,null)
}
// Save Int
fun saveIntPref(key: String, value: Int) {
sharedPreferences.edit().putInt(key,value).apply()
}
// get Int
fun getIntPref(key: String): Int {
return sharedPreferences.getInt(key,0)
}
}
Вот фрагмент из моей LoginActivity, который работает, но когда я пропущу две строки в RetrofitClient, он не будет инициализирован
class LoginActivity : AppCompatActivity() {
private lateinit var loginSavedPreferences: LoginSavedPreferences /// THIS LINE
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_login)
loginSavedPreferences = LoginSavedPreferences(applicationContext) /// AND THIS LINE
// put values in the text boxes if we have them
val savedserveraddress = loginSavedPreferences.getStringPref(LoginConstants.KEY_SERVERADDRESS)
val savedusername = loginSavedPreferences.getStringPref(LoginConstants.KEY_USERNAME)
val savedpassword = loginSavedPreferences.getStringPref(LoginConstants.KEY_PASSWORD)