2016-08-11 62 views
0

我对使用Android首选项与Support v7或v14库感到困惑。 似乎每隔几个月Google都会更改API。支持库中的Android时间首选项对话框

我正在尝试创建Time Preference对话框。但是,我目前的一个不支持支持库。

public class TimePickerPreference : DialogPreference 
{ 
    private int lastHour = 0; 
    private int lastMinute = 0; 
    private TimePicker picker = null; 

    public static int GetHour(string time) 
    { 
     string[] pieces = time.Split(':'); 

     return Convert.ToInt32(pieces[0]); 
    } 

    public static int GetMinute(string time) 
    { 
     string[] pieces = time.Split(':'); 

     return Convert.ToInt32(pieces[1]); 
    } 

    public TimePickerPreference(Context ctxt, IAttributeSet attrs) : base(ctxt, attrs) 
    { 
    } 

    protected override View OnCreateDialogView() 
    { 
     picker = new TimePicker(Context); 
     picker.SetIs24HourView(Java.Lang.Boolean.True); 
     return picker; 
    } 

    protected override void OnBindDialogView(View v) 
    { 
     base.OnBindDialogView(v); 

     picker.Hour = lastHour; 
     picker.Minute = lastMinute; 
    } 


    protected override void OnDialogClosed(bool positiveResult) 
    { 
     base.OnDialogClosed(positiveResult); 

     if (positiveResult) 
     { 
      lastHour = picker.Hour; 
      lastMinute = picker.Minute; 

      string time = lastHour + ":" + lastMinute; 
      if (lastMinute.ToString().Length == 1) 
       time = lastHour + ":" + "0" + lastMinute; 

      if (CallChangeListener(time)) 
      { 
       PersistString(time); 
      } 

      Title = "שעת תזכורת: " + time; 
     } 
    } 

    protected override Java.Lang.Object OnGetDefaultValue(TypedArray a, int index) 
    { 
     return a.GetString(index); 
    } 

    protected override void OnSetInitialValue(bool restorePersistedValue, Java.Lang.Object defaultValue) 
    { 
     string time = string.Empty; 

     if (restorePersistedValue) 
     { 
      if (defaultValue == null) 
      { 
       time = GetPersistedString("00:00"); 
      } 
      else 
      { 
       time = GetPersistedString(defaultValue.ToString()); 
      } 
     } 
     else 
     { 
      time = defaultValue.ToString(); 
     } 

     lastHour = GetHour(time); 
     lastMinute = GetMinute(time); 
    } 
} 

DialogPreference不支持库中存在,似乎是什么,而不是要么PreferenceDialogFragmentPreferenceDialogFragmentCompat,这两者的工作方式不同,上面的代码不与他们合作。

我真的在失去所有这一切,并会很高兴的一些帮助。

谢谢!

回答

0

支持库是:

Android的支持库提供了大量的未建成的框架功能。这些图书馆提供的新功能向后兼容的版本,提供不包括在这个框架是有用的UI元素,并提供一系列的实用程序,应用程序可以在 https://developer.android.com/topic/libraries/support-library/index.html#overview

画如果你使用,你必须支持库添加到您的项目,但如果您使用DialogPreference存在于API level 1您的应用程序将运行在每个Android设备。

您不需要使用支持库,除非需要某个功能在您的目标sdk中不可用。

女巫支持我必须使用?对女巫的特征和分SDK deppend你需要:

V4支持库

这个库的设计与Android 1.6(API级别4)和较高的使用。它包含与其他库相比最大的一组API,包括对应用程序组件,用户界面功能,可访问性,数据处理,网络连接和编程实用程序的支持。

V7库

有几个库设计成与Android 2.1(API级别7)和更高使用。这些库提供了特定的功能集,并且可以彼此独立地包含在您的应用程序中。

V7程序兼容性库

这个库增加了操作栏的用户界面设计模式的支持。

注意:此库取决于v4支持库。如果您使用的是Ant或Eclipse,请确保您将v4 Support Library作为此库类路径的一部分。

V13支持库

该库被设计成用于Android 3.2版(API级13)和更高。它增加了对与(FragmentCompat)类和额外的片段支持类

https://developer.android.com/topic/libraries/support-library/features.html

+0

,所以我不应该从支持库使用PreferenceFragment分片用户界面模式支持?它可以在较旧的设备上工作?如果是这样,Google为什么创建它? – amitairos

+0

这个组件只是额外的。你可以使用它,但增加你的apk大小。 –

+0

无论如何,我需要支持库,因为有些功能只能在那里使用。我不应该使用哪一个,以及我应该使用哪一个首选项?哪些工作适用于老年人? – amitairos

相关问题