0

我目前正在创建一个带有edittext的警报对话框,它在我的登录屏幕上点击打开,它应该允许更新我的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";

现在我的问题是,如何在登录屏幕上的警报对话框中添加的编辑文本框中更新此基本 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 并即时保存?有什么想法或例子吗?提前致谢!

4

2 回答 2

1

你的问题本身就有答案。

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

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

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

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

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

于 2019-04-17T01:46:26.560 回答
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
于 2019-04-17T00:56:17.380 回答