0

Android v7 또는 v14 라이브러리와 함께 Android 기본 설정을 사용하는 것에 대해 혼란스러워합니다. 구글이 몇 달에 한 번씩 API를 바꾼 것처럼 보입니다.Android 라이브러리의 시간 설정 대화 상자가

시간 기본 설정 대화 상자를 만들려고합니다. 그러나 현재 나의 지원 라이브러리는 작동하지 않습니다.

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

는 지원 라이브러리에 존재하고, 무엇을 다르게 작동하고, 위의 코드는 그들과 함께 작동하지 않습니다 둘 중 하나 PreferenceDialogFragment 또는 PreferenceDialogFragmentCompat입니다 대신 것으로 보인다되지 않습니다.

나는이 모든 것들을 정말로 잃어 버렸으므로 도움이 될 것입니다.

감사합니다.

답변

0

지원 라이브러리는 다음과 같습니다

안드로이드 지원 라이브러리 프레임 워크에 내장되지 않은 기능을 제공합니다. 이 라이브러리는 프레임 워크에 포함되지 않은 유용한 UI 요소를 제공하고, 당신은 당신이 가지고 지원 라이브러리를 사용하는 경우 애플 리케이션 https://developer.android.com/topic/libraries/support-library/index.html#overview

에 그릴 수있는 유틸리티의 범위를 제공, 새로운 기능의 이전 버전과 호환되는 버전을 제공 귀하의 프로젝트에 추가되었지만 API level 1에있는 DialogPreference을 사용하면 앱이 모든 Android 기기에서 실행됩니다.

대상 SDK에서 사용할 수없는 기능이 필요하지 않으면 지원 라이브러리를 사용할 필요가 없습니다.

마녀 지원 나는 사용해야합니까? 마녀 기능 및 분 SDK를 deppend 당신이 필요합니다

v4를 지원 라이브러리

이 라이브러리는 안드로이드 1.6 (API 레벨 4) 이상에서 사용하도록 설계되었습니다. 여기에는 응용 프로그램 구성 요소, 사용자 인터페이스 기능, 액세스 가능성, 데이터 처리, 네트워크 연결 및 프로그래밍 유틸리티에 대한 지원을 포함하여 다른 라이브러리와 비교하여 가장 큰 API 집합이 포함됩니다.

V7 라이브러리

는 안드로이드 2.1 (API 레벨 7) 이상에서 사용하도록 설계 여러 라이브러리가 있습니다. 이 라이브러리는 특정 기능 세트를 제공하며 응용 프로그램에 서로 독립적으로 포함될 수 있습니다.

V7 라이브러리

APPCOMPAT이 라이브러리는 작업 표시 줄 사용자 인터페이스 디자인 패턴에 대한 지원을 추가합니다.

참고 :이 라이브러리는 v4 지원 라이브러리에 따라 다릅니다. Ant 또는 Eclipse를 사용하는 경우이 라이브러리의 클래스 경로에 v4 지원 라이브러리를 포함시켜야합니다.

V13 지원 라이브러리

이 라이브러리는 안드로이드 3.2 (API 레벨 13) 이상에서 사용하도록 설계되었습니다.그것은

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

+0

그래서 나는 지원 라이브러리에서 PreferenceFragment를 사용해서는 안 (FragmentCompat) 클래스와 추가 조각 지원 클래스와 조각 사용자 인터페이스 패턴에 대한 지원을 추가? 오래된 장치에서도 작동합니까? 그렇다면 왜 Google이 그것을 만들었습니까? – amitairos

+0

이 구성 요소는 단지 추가 용도로만 사용할 수 있지만 APK 크기는 늘어납니다. –

+0

어쨌든 일부 기능 만 사용할 수 있으므로 지원 라이브러리가 필요합니다. 어떤 것을 사용하면 안되며 어떤 환경 설정을 사용해야합니까? 이전 api에서 어떤 작업을합니까? – amitairos