如何向我的Android应用添加属性,我可以通过设置菜单

时间:2017-10-03 03:48:13

标签: android xamarin properties

我的Android应用程序将连接到传递数据的服务URL,数据将保存在我的App数据变量中,工作将开始。所以,我希望用户从“设置”菜单动态更改服务URL如果需要的话。如果没有,则默认URL必须完成其工作。 我在Resources / values / strings.xml文件中声明了一个变量。但这是静态我想让它变得动态。 并且必须在应用程序启动之前设置url 我正在使用Xamarin Android在Visual Studio 2017中工作。

1 个答案:

答案 0 :(得分:1)

  

因此,如果需要,我希望用户从“设置”菜单动态更改服务URL。如果没有,则默认URL必须完成其工作。

您可以使用Preferences来实现这一目标:

示例:

  1. 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>
    
  2. 创建SettingsFragmentSettingsActivity作为设置的容器:

    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();
    
        }
    }
    
  3. 从应用中的任意位置获取设置:

    ISharedPreferences sharedPref = PreferenceManager.GetDefaultSharedPreferences(this);
    string syncConnPref = sharedPref.GetString("pref_url", "");
    
  4. 以下是完整的演示:PreferenceDemo