【问题标题】:Don't understand how to correct mistake in datepicker code不明白如何纠正 datepicker 代码中的错误
【发布时间】:2015-10-06 08:15:21
【问题描述】:

我无法理解我在哪里做错了。我想检查它是周末还是工作日。如果是周末,则应该在吐司中提示这是周日或周六周末。我不知道我应该用什么代替???标记。如果是周末,它还应该显示当前日期。拜托,任何人都可以帮助我。谢谢。

     View.OnClickListener//,
//       TimePickerDialog.OnTimeSetListener


      // TimePickerDialog.OnTimeSetListener
{
    //Declaration for class
    ButtonViews views;
    dpListener dpListenerView;
    // Declartion for member vairables
    int day, month, x_year;
    int hour;
    int minute;
    Calendar calendar;

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

        views = new ButtonViews();
        dpListenerView = new dpListener();

        //ButtonListener
        views.button_date.setOnClickListener(this);
        views.button_time.setOnClickListener(this);
        //

       // pick up the default date using Calender class
         calendar =  GregorianCalendar.getInstance(TimeZone.getTimeZone("GMT"), Locale.getDefault());

/*
        day = calendar.get(Calendar.DAY_OF_MONTH);
        month = calendar.get(Calendar.MONTH);
        x_year = calendar.get(Calendar.YEAR);
*/
        curr_date();

        hour = calendar.get(Calendar.HOUR_OF_DAY);
        minute = calendar.get(Calendar.MINUTE);

        setupDate(day, month, x_year);
        setupTime(hour, minute);
   }

    public void curr_date(){
        day = calendar.get(Calendar.DAY_OF_MONTH);
        month = calendar.get(Calendar.MONTH);
        x_year = calendar.get(Calendar.YEAR);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.button_date:
                showDatePickerDialog();
                break;
            case R.id.button_time:

                break;
        }
    }


    private void setupTime(int hours, int minutes) {
        views.button_time.setText(hours + ":" + minutes);
    }

    private void setupDate(int day, int month, int year) {

        String strMonth = ((month + 1) <= 9) ? ("0" + (month + 1)) : String.valueOf(month + 1);
                  views.button_date.setText(String.valueOf(day) + "/" + strMonth + "/" + String.valueOf(year));
    }
    private void showDatePickerDialog() {
        DatePickerDialog datepickerdialog = new DatePickerDialog
                (
                        this,
                         dpListenerView,
                       /* new DatePickerDialog.OnDateSetListener() {
                            @Override
                            public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
                            } },*/
                        //this,

                        x_year,
                        month,
                        day
                );

           datepickerdialog.show();
    }


  class ButtonViews {
        Button button_time;
        Button button_date;

        public ButtonViews() {
            button_date = (Button) findViewById(R.id.button_date);
            button_time = (Button) findViewById(R.id.button_time);
        }
    }

  class dpListener implements OnDateSetListener {
      @Override
      public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {


          Calendar c = Calendar.getInstance();
         // c.setTime();
          int dayOfWeek = c.get(Calendar.DAY_OF_WEEK);

         if(dayOfWeek == 7 || dayOfWeek == 1) {
              // as your requirement: you should display mesage they can not select the weekend" here
              // then you set the value in datepickerdialog by current date
              Toast.makeText(DateTimePickerActivity.this
                      , "You have selected weekend"
                      , Toast.LENGTH_SHORT).show();
          }


      }


   }
}

【问题讨论】:

  • 你从哪里得到 dayOfWeek

标签: java android


【解决方案1】:

一旦你得到你的约会对象,你就可以这样做,得到日期并继续你的逻辑。

    Calendar c = Calendar.getInstance();
    c.setTime(yourDate);
    int dayOfWeek = c.get(Calendar.DAY_OF_WEEK);

【讨论】:

  • 你提到了我你的日期。拜托,你能解释一下我应该写什么来代替它
  • 您从用户那里获得的输入或您当前的日期和时间。不要忘记投票并接受答案
【解决方案2】:

我认为你的变量 dayOfWeek 和参数 dayOfMonth

是同一个变量

上面的代码必须工作

public DatePickerDialog.OnDateSetListener pickerListener = new DatePickerDialog.OnDateSetListener() {

    @Override
    public void onDateSet(DatePicker view, int selectedYear,
                          int selectedMonth, int selectedDay) {
        if (selectedDay == 1 || selectedDay == 7) {
            Toast.makeText(DateTimePickerActivity.this
                  , "You have selected weekend"
                  , Toast.LENGTH_SHORT).show();
            view.updateDate(selectedYear,selectedMonth,selectedDay);
        }
    }
};

【讨论】:

  • 我正在编辑我的原始代码。拜托,你能检查一下我应该编码什么。谢谢你的回复
  • 也许你的问题是事件的类型,检查 onDateChangedListener 作为这个帖子:stackoverflow.com/questions/2051153/…
猜你喜欢
  • 2017-09-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多