2017-12-18 14 views
0

자동 완성에 대한 설명서를 참조하십시오 here . 특히 AUTOFILL_HINT_CREDIT_CARD_EXPIRATION_DATE 상수. 그래서 oreo 에뮬레이터에서 자동 채우기를 설정하고 저장된 사용자의 신용 카드 정보를 얻는 데 효과적입니다. 그러나 문제는 만료일이 "09/19"형식의 자동 채우기에서 오는 것이지만 "09/2019"로 필요합니다. 문서에서 그것은 우리가 무시할 수 있다고 말합니다 getAutofillType() to return AUTOFILL_TYPE_DATE.신용 카드 만료일 자동 완성 - 4 자리 연도는 어떻게 사용합니까?

나는 그것을 얻지 못합니까? 이 방법으로 그것은 시대의 시간을 나에게 되돌려줍니다. 내가 원하는 형식으로 날짜를 반환하려면 어떻게해야합니까?

당신은 다음과 같은 방법을 재정 의하여 뷰에 대한 최신 자동 완성 값을 정의 :

  • getAutofillType()를 AUTOFILL_TYPE_DATE를 반환하는

    구글에서는이 작업을 수행하는 지시를 내 렸습니다.
  • 날짜 자동 완성 값을 반환하는 getAutofillValue().

  • 데이터 자동 채우기를 기대하는 자동 완성 (AutofillValue). 여기에 주어진

내가 정의 글고 지금까지 무엇을 가지고 :

public class AutoFillDateFormEditText extends AppCompatEditText{ 
    public AutoFillDateFormEditText(Context context) { 
     super(context); 
    } 

    public AutoFillDateFormEditText(Context context, AttributeSet attrs) { 
     super(context, attrs); 
    } 

    public AutoFillDateFormEditText(Context context, AttributeSet attrs, int defStyle) { 
     super(context, attrs, defStyle); 
    } 


    @Override 
    public int getAutofillType() { 
     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { 
      return AUTOFILL_TYPE_DATE; 
     } 
     else return super.getAutofillType(); 
    } 

    @Override 
    public void autofill(AutofillValue value) { 
     super.autofill(value); //what goes here ? im lost 
    } 

    @Nullable 
    @Override 
    public AutofillValue getAutofillValue() { 
     return //what should i return here ???? 
    } 
} 

내가 추천 무시 만 getAutofillType()에 중단 점을 중단 점 히트의 나머지를 가져옵니다 보유하더라도 재정의 된 메서드는 적중되지 않습니다. Google 샘플 앱인 '자동 완성 샘플'을 다운로드하고 시험해 보았습니다. 날짜도 작동하지 않습니다. 그래서 나는 그 어떤 일을 아직 잘못하고 있다고 생각하지 않는다. oreo 에뮬레이터 api 26 Nexus 6P에서 테스트 중입니다. https://developer.android.com/guide/topics/ui/controls/pickers.html#PickerAutofill

하지만 시스템 자동 채우기 서비스 (적어도 에뮬레이터) 작업을 현재하지 않을 것 같다 :

같은 지침이 여기에 있습니다.

답변

0

SimpleDateFormat을 사용하여 날짜 형식을 지정할 수 있습니다.

DateFormat originalFormat = new SimpleDateFormat("MM/yy", Locale.ENGLISH);
DateFormat targetFormat = new SimpleDateFormat("MM/yyyy");
Date date = originalFormat.parse("09/19");

+0

응답 해 주셔서 감사합니다. 나는 날짜가 "09/19"일 것입니다. 이것이 Google이 날짜를 입력하는 방법에 대한 많은 예를 제시 한 이유입니다. https://developer.android.com/reference/android/view/View.html#AUTOFILL_HINT_CREDIT_CARD_EXPIRATION_DATE에 게시 된 상태로 돌아가보세요. 그래서 나는 시스템이 나를 에포크 시간으로 돌려 줄 수있는 방법이 필요하다. 그런 다음 그것을 변환 할 수있다. 하지만 나는 그 시대를 잡는 법을 모른다. – j2emanue