【问题标题】:How can I set Android Retrofit2 BASE URL taking values of EditText from an activity?如何设置 Android Retrofit2 BASE URL 从活动中获取 EditText 的值?
【发布时间】:2019-03-29 09:07:54
【问题描述】:

我有一个活动,我通过两个不同的EditText 获取基本 url ip,如 10.0.2.2 和端口 8080。
现在,我正在从获得的值(如http://10.0.2.2:8080)中创建一个 url 字符串。
现在我需要将此网址设置为ApiClient() BASE_URL。此网址将是永久的。它应该在任何活动或任何片段中的整个应用程序中都可用。
注意:我只需要设置应用程序生命周期的单次值。
如果您建议Singleton ClassSharedPreference,请说明来源。 (我已经尝试过,但效果并不理想)

【问题讨论】:

  • 据我所知,我们无法更改基本 url,但我们可以在发送请求时更改 url,类似于 stackoverflow.com/questions/32559333/retrofit-2-dynamic-url
  • 我不想更改基本网址。当应用程序第一次运行时,我只需要在运行时设置基本 url 从EditText 输入中获取值。
  • 您可以使用@Url 参数在请求中设置url,如此链接stackoverflow.com/questions/32559333/retrofit-2-dynamic-url
  • 这不是我想要的。谢谢

标签: android retrofit2 base-url


【解决方案1】:

对于上述问题,最好的解决方案是将信息存储在SQLiteRoom数据库中或手动将信息存储在Phone Storage中的文件中。

使用SharedPreferences 也可以。在这种情况下,ApiClient 应该有一个参数。

【讨论】:

    【解决方案2】:

    你可以创建一个类并定义一个越来越好的静态变量。 并在您从编辑文本中获取值时初始化这些变量,然后您可以简单地从该静态中获取值 在您的活动课程中,您可以像这样访问 baseurl.Setip(您的编辑文本值) 要获得该IP,您可以编写 Retrofit.Builder.baseurl(baseurl.getIp) 像这样的东西 Hope this image will explain you

    【讨论】:

    • 我试过了。此过程仅适用于第一次。但是在应用程序销毁后,信息就会丢失。所以最好使用 SQLite 数据库或将信息存储在手机存储中的文件中。顺便说一句,感谢您的回答。
    • 那么您可以使用 SharedPreferences 来存储此 url,如果您愿意,我可以共享语法来存储和检索 sharedpreference
    • 共享偏好只能从活动中访问。因此,在这种情况下,您无法从共享偏好中获得价值。
    • @Mehedi 共享首选项也可以从 java 类中访问,只需要使用上下文进行扩展
    猜你喜欢
    • 1970-01-01
    • 2021-03-12
    • 2017-04-01
    • 2020-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-18
    相关资源
    最近更新 更多