0

私はアンドロイドホイールをタイムピッカーとして使用しており、以下のように値を取得しています

private void SetTime(Context activity, int hour, int minute) {                  
    LayoutInflater inf = LayoutInflater.from(activity);
    // layout of alert box contains
    View view = inf.inflate(R.layout.wheel, null);

    final WheelView hours = (WheelView) view.findViewById(R.id.hours);
    hours.setViewAdapter(new NumericWheelAdapter(activity, 0, 23,"%02d"));          
    hours.setCyclic(true);
    hours.setCurrentItem(expiryHour);
    Log.d(TAG, "for expiryHour123456 ---> " + expiryHour);

    final WheelView mins = (WheelView) view.findViewById(R.id.minutes);
    mins.setViewAdapter(new Mywheel(activity, 0, 59,"%02d"));
    mins.setCyclic(true);           
    mins.setCurrentItem(expiryMinute);
    Log.d(TAG, "for expiryMinute123456 ---> " + expiryMinute);

    new AlertDialog.Builder(activity)
    .setMessage("Set Time For Post To AutoDelete")
    .setView(view)              
    .setPositiveButton("Set",
            new DialogInterface.OnClickListener() {

        @Override
        public void onClick(DialogInterface dialog, int which) {

            expiryHour = hours.getCurrentItem();
            Log.d(TAG, "for expiryHour ---> " + expiryHour);
            if(mins.getCurrentItem() > 0){
                expiryMinute = mins.getCurrentItem() + 4;
                Log.d(TAG, "for expiryMinute ---> " + expiryMinute);
            }else{
                expiryMinute = mins.getCurrentItem();
            }
        }
    });
}

時間を設定するときは正しい値を取得していますが、時間を変更したい場合は時間を何度も設定すると、分の値が間違って表示されます。たとえば、最初に2:10に設定してから、2:14の表示を開いたときに変更したかったのですが、これは発生しないはずです。

4

2 に答える 2

0

コードの以下の行を確認してください。

if(mins.getCurrentItem() > 0){
         expiryMinute = mins.getCurrentItem() + 4;
         Log.d(TAG, "for expiryMinute ---> " + expiryMinute);
}

これが問題の原因である可能性があります。mins値を増やす特別な理由はありますか?

于 2013-03-12T10:24:07.847 に答える
0

mins.setCurrentItem(expiryMinute-4); のように分車の値を設定して解決しました。

final WheelView mins = (WheelView) view.findViewById(R.id.minutes);
            mins.setViewAdapter(new Mywheel(activity, 0, 59,"%02d"));
            mins.setCyclic(true);
            if(expiryMinute!=0){
            mins.setCurrentItem(expiryMinute-4);
            }
于 2013-03-12T12:43:36.597 に答える