如何解决是否可以将URL保存为值/字符串,然后在Android Studio中使用改造时访问它?
我该把与连接到服务器的URL相关的所有内容都放在值/字符串中,这可能吗?这是我所拥有的:
private val retrofit = Retrofit.Builder()
.baseUrl("https://www.url.com")
.addConverterFactory(GsonConverterFactory.create())
.client(client)
.build()
我可以将https://www.url.com保存在res / values / Strings文件夹中吗?这样吗?
<string name="https://www.url.com">https://www.url.com"</string>
如果执行此操作,我只是不确定如何访问它。 如果不可能,是否有必要将与服务器/ URL相关的任何内容放在另一个类中?
解决方法
是的,可以。您将需要一个Context
对象来检索该字符串。
class ApiFactory(private val appContext: Context) {
...
private val retrofit = Retrofit.Builder()
.baseUrl(context.getString(R.string.your_url))
.addConverterFactory(GsonConverterFactory.create())
.client(client)
.build()
...
}
注意:请勿在此处传递“活动”上下文,否则可能会导致问题。阅读this。按照链接中所述传递应用程序上下文
,您可以创建一个空的kotlin文件,并在此处添加公共常量。
常量文件:
const val MY_BASE_URL = "https://www.url.com"
const val MY_ENDPOINT = "/names"
或者您可以创建一个类,然后将所有内容添加到伴随对象中。
Constants.kt:
class Constants {
companion object {
const val MY_BASE_URL = "https://www.url.com"
const val MY_ENDPOINT = "/names"
}
}
您可以通过两种方式访问它们。
您仍然希望将它们添加到您的strings.xml
吗?
想象一下,必须使用strings.xml
中的字符串url:
如果Activity
Fragment
或具有上下文的任何类:您可以访问上下文来调用字符串。
getContext(getString(R.string.url))
getString(getString(R.string.url))
但是当类无法拥有自己的上下文时,您将无法访问它。
您还应该阅读此answer。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。