Android 如何通过UI更新gradle中定义的基本URL?

Android 如何通过UI更新gradle中定义的基本URL?,android,android-edittext,sharedpreferences,android-alertdialog,android-buildconfig,Android,Android Edittext,Sharedpreferences,Android Alertdialog,Android Buildconfig,我目前正在创建一个包含edittext的alertdialog对话框,点击我的登录屏幕即可打开该对话框,该对话框应允许更新我的gradle中定义的基本URL。 例如,我目前正在定义我的基本url,如下所示: buildConfigField("String", "BASE_URL", "\"https://myapp.com/api\"") 运行应用程序时,会将其转换为buildConfig URL,从而在buildConfig.java中显示为: public static final

我目前正在创建一个包含edittext的alertdialog对话框,点击我的登录屏幕即可打开该对话框,该对话框应允许更新我的gradle中定义的基本URL。 例如,我目前正在定义我的基本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使用了类似的代码,如下所示:

只是想知道是否有一种方法可以在UI中动态更新基本URL并动态保存?有什么想法或例子吗?
提前谢谢

所以基本上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

你的问题本身就有答案

  • 只是想知道是否有一种方法可以在UI中动态更新基本URL并动态保存
  • 回答:没有
生成的
BuildConfig.java
文件包含所有
静态字段和最终字段

public静态最终字符串BASE\u URL=”https://myapp.com/api";

在java中,您不能更改
final
字段

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

那么在我的例子中,如何更新基本url?我现在在回答中给出了一个示例。让我知道这是否是您想要的?这可能不应该是
BuildConfig
,而是一个字符串资源。你们中的任何人都可以在骨架加载方面帮助我解决这个问题:还想知道,如果基本url是从json查询返回的,您如何开始解析它