2016-08-11 56 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

相關問題