我目前正在创建一个带有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并保存?任何想法或例子?提前致谢!
你的问题本身就有答案。
生成的BuildConfig.java
文件包含所有static and final
字段。
public static final String BASE_URL = "https://myapp.com/api";
在java中,您无法更改final
字段。
建议:在警报对话框中点击保存按钮时,将更新的URL保存在实例变量中(将在关闭应用程序时关闭)或存储在SharedPreferences
中(即使在重新打开应用程序后也可以使用)。这样您就可以在任何地方使用变量。
所以基本上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