我的Android应用程序将连接到传递数据的服务URL,数据将保存在我的App数据变量中,工作将开始。所以,我希望用户从“设置”菜单动态更改服务URL如果需要的话。如果没有,则默认URL必须完成其工作。 我在Resources / values / strings.xml文件中声明了一个变量。但这是静态我想让它变得动态。 并且必须在应用程序启动之前设置url 我正在使用Xamarin Android在Visual Studio 2017中工作。
答案 0 :(得分:1)
因此,如果需要,我希望用户从“设置”菜单动态更改服务URL。如果没有,则默认URL必须完成其工作。
您可以使用Preferences来实现这一目标:
示例:
在preferences.xml
中创建Resouces\xml
以保存设置:
<?xml version="1.0" encoding="utf-8" ?>
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android">
<EditTextPreference
android:key="pref_url"
android:title="pref_url"
android:summary="This is service url"
//default value for url service setting
android:defaultValue="http://www.google.com" />
</PreferenceScreen>
创建SettingsFragment
和SettingsActivity
作为设置的容器:
public class SettingsFragment:PreferenceFragment
{
public override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
AddPreferencesFromResource(Resource.Xml.Preferences);
}
public override void OnResume()
{
base.OnResume();
PreferenceScreen.SharedPreferences.RegisterOnSharedPreferenceChangeListener(this);
}
public override void OnPause()
{
base.OnPause();
PreferenceScreen.SharedPreferences.UnregisterOnSharedPreferenceChangeListener(this);
}
}
[Activity(Label = "PreferenceDemo")]
public class SettingsActivity:Activity
{
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
SetContentView(Resource.Layout.Settings);
FragmentManager.BeginTransaction().Replace(Resource.Id.container, new SettingsFragment()).Commit();
}
}
从应用中的任意位置获取设置:
ISharedPreferences sharedPref = PreferenceManager.GetDefaultSharedPreferences(this);
string syncConnPref = sharedPref.GetString("pref_url", "");
以下是完整的演示:PreferenceDemo。