TimePicker重置错误。任何解决方法?

时间:2017-03-30 03:25:43

标签: android

我发现TimePicker小部件存在一些问题。用户更改小部件后的时间setHour和setMinute方法不起作用。

public class MainActivity extends AppCompatActivity {

    private Button mButton;
    private TimePicker mTimePicker;

    private static final String TAG = "MainActivity";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mButton = (Button) findViewById(R.id.reset);
        mTimePicker = (TimePicker) findViewById(R.id.timePicker);

        mButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Calendar cal = Calendar.getInstance();
                int hour = cal.get(Calendar.HOUR_OF_DAY);
                int minute = cal.get(Calendar.MINUTE);

                mTimePicker.setHour(hour);
                mTimePicker.setMinute(minute);

                Log.v(TAG, "onClick: " + hour + "=>" + mTimePicker.getHour());
                Log.v(TAG, "onClick: " + minute + "=>" + mTimePicker.getMinute());
            }
        });
    }
}

重现步骤:

  1. 运行app(我的时间:13:21)
  2. 更改小工具的时间(21:21)
  3. 点击“重置”按钮
  4. 结果:时间未重置为13:21

    日志:

      

    03-30 13:18:05.765 30923-30923 / ru.neverdark.timepickerproblem   V / MainActivity:onClick:13 => 21 03-30 13:18:05.765   30923-30923 / ru.neverdark.timepickerproblem V / MainActivity:onClick:   18 => 18

    此问题的解决方法是什么?

    我在问题跟踪器中发现的相同错误:https://code.google.com/p/android/issues/detail?id=208180但在SDK25中未修复...

    github上的演示项目:https://github.com/yankovskiy/TimePickerProblem

2 个答案:

答案 0 :(得分:0)

 protected Dialog onCreateDialog(int id) {
    checkMark = (Button) findViewById(R.id.button13)                            ;
    checkMark.setVisibility(View.VISIBLE)                                       ;
    switch (id) {
        case TIME_DIALOG_ID:
        // set time picker as current time
        return new TimePickerDialog(this,
            timePickerListener, hour, minute,false);

        case TIME_DIALOG_ID_ON:
        // set time picker as current time
        return new TimePickerDialog(this,
            timePickerListenerOn, hour, minute,false);
    }
    return null;
    }

这个怎么样?

picker.setCurrentHour(date.getHours())
picker.setCurrentMinute(date.getMinutes())

答案 1 :(得分:0)

嗯,我必须承认,这不是我最自豪的代码。

但作为解决方法,您可以拥有:

def deal_page(product_url)
  ...
  html = Nokogiri::HTML(open(product_url))
  ...
end

在API 21,22和23上测试。

错误在API 24,25中无法重现。