2017-12-18 15 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を返すために

    は、Googleがどのようにこれを行うための指示を出しました。
  • getAutofillValue()は、日付の自動入力値を返します。

  • データ自動記入値を期待する自動記入(自動記帳)。ここで私は、カスタムのEditTextで、これまで持っているものであることを考えると

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

関連する問題