如何通过UI更新我的gradle中定义的BASE_URL?

问题描述 投票:0回答:2

我目前正在创建一个带有edittext的alertdialog框,它在我的登录屏幕上打开,这应该允许更新我的gradle中定义的BASE_URL。比如我当前正在定义我的base_url,如下所示:

 buildConfigField("String", "BASE_URL", "\"https://myapp.com/api\"")

在运行应用程序时将其转换为buildConfig URL,以便在Buildconfig.java中显示为:

  public static final String BASE_URL = "https://myapp.com/api";

现在我的问题是,如何在我在登录屏幕上的alertdialog中添加的编辑文本框中更新此基本URL,这样如果我将编辑文本文本更改为:

https://myapp.com/api2

单击保存后,它应保存新条目并在整个应用程序过程中将其应用于buildconfig文件。我还想显示一个重置按钮,以便能够将此URL重置为原始URL。任何想法如何去做?

我正在使用类似于alertdialog的代码:https://medium.com/@mujtahidah/custom-dialog-with-edittext-and-button-action-android-fc64ef5eb2b2

只是想知道是否有一种方法可以动态更新UI中的BASE_URL并保存?任何想法或例子?提前致谢!

android android-edittext sharedpreferences android-alertdialog android-buildconfig
2个回答
1
投票

你的问题本身就有答案。

  • 只是想知道是否有一种方法可以动态更新UI中的BASE_URL并保存?
  • 回答:不

生成的BuildConfig.java文件包含所有static and final字段。

public static final String BASE_URL = "https://myapp.com/api";

在java中,您无法更改final字段。

建议:在警报对话框中点击保存按钮时,将更新的URL保存在实例变量中(将在关闭应用程序时关闭)或存储在SharedPreferences中(即使在重新打开应用程序后也可以使用)。这样您就可以在任何地方使用变量。


0
投票

所以基本上BuildConfig是一个生成的文件,它在编译时发生。因此,如果要使用在运行时设置的值,则应该在内存中使用某些内容,或使用共享首选项。您无法在运行时编辑编译时生成的文件。

SharedPreferences prefs = this.getSharedPreferences(
      "com.example.app", Context.MODE_PRIVATE);


prefs.edit().putString("base_url", "your new base url").apply();


String baseUrl = prefs.getString("base_url", BuildConfig.BASE_URL); 
// BuildConfig.BASE_URL being your default value
© www.soinside.com 2019 - 2024. All rights reserved.