【问题标题】:How to extract date from calendar in Android?如何从Android中的日历中提取日期?
【发布时间】:2016-09-27 07:40:37
【问题描述】:

我正在尝试在Android 中制作活动策划者应用程序。我已经添加了日历widget 现在我想要的是,每当用户单击添加事件按钮时,它将转到一个新的Activity 屏幕,并且用户在之前的Activity 的日历中选择的日期被准确地复制到文本字段。谁能帮我处理这段代码?
P.S.-我在主屏幕上添加了两个Fragments,一个用于日历,一个用于Buttons

提前致谢。

【问题讨论】:

    标签: android android-fragments android-studio android-activity android-calendar


    【解决方案1】:

    如果您的意思是DatePicker,那么这就是您通过注册日期选择侦听器获得选定日期的方式

    datePicker.init(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), new DatePicker.OnDateChangedListener() {
    
        @Override
        public void onDateChanged(DatePicker datePicker, int year, int month, int dayOfMonth) {
                        Log.d("Date", "Year=" + year + " Month=" + (month + 1) + " day=" + dayOfMonth);
    
                    }
                });
    

    或者您可以随时通过以下方式获取所选日期:

     DatePicker datePicker = (DatePicker) findViewById(R.id.datePicker1);
     int day = datePicker.getDayOfMonth();
     int month = datePicker.getMonth() + 1;
     int year = datePicker.getYear();
    

    或者如果您使用的是CalendarView,那么一个简单的getDate() 调用就可以解决问题。现在从中提取日、月、年,并通过Intent 将其传递给下一个活动

    如果您正在使用其他东西,请告诉我们。

    【讨论】:

      【解决方案2】:
      // Declaration
      
       private int mDay;
       private int mMonth;
       private int mYear;
      
      
      // Creating click listener of button
      
      button.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View v) {
      
           // Getting values from DatePicker
      
           DatePicker datePicker = (DatePicker) findViewById(R.id.datePicker1);
           mDay = datePicker.getDayOfMonth();
           mMonth = datePicker.getMonth() + 1;
           mYear = datePicker.getYear();
      
          // Here you have to write the code to start new Activity
          // If your second activity name is "SecondActivity" then use below code
      
          Intent intent = new Intent(FirstActivity.this,SecondActivity.class);
      
          // Put the date values to the intent
          intent.putExtra("Day",mDay);
          intent.putExtra("Month",mMonth);
          intent.putExtra("Year",mYear);
      
          startActivity(intent);
      
      }
      });
      

      第二次Activity

      int day;
      int month;
      int year;
      
      EditText dateEditText;
      
      @Override
      protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_second);
      
          dateEditText = (EditText)findViewById(R.id.dateEditText);
      
          Intent intent = getIntent();
      
          if(intent != null){
               day = intent.getIntExtra("Day",0);
               month = intent.getIntExtra("Month",0);
               year = intent.getIntExtra("Year",0);
      
               Calendar calendar = Calendar.getInstance();
               calendar.set(2013,5,23);
      
      
               SimpleDateFormat format = new SimpleDateFormat("EEEE, MMMM d, yyyy 'at' h:mm a");
              dateEditText.setText(format.format(calendar.getTime()));
      
          }
      
      }
      

      编辑

      // If you are using Calendar View
      
      calendarView.setOnDateChangeListener(new OnDateChangeListener() {
      
      @Override
      public void onSelectedDayChange(CalendarView arg0, int year, int month,
          int date) {
      
           mDay = date;
           mYear = year;
           mMonth = month;
           // Now you can uses year, month date to sent 
      }
      

      });

       // Click Listener of Button in case of CalenderView
      
      button.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View v) {
      
          // Here you have to write the code to start new Activity
          // If your second activity name is "SecondActivity" then use below code
      
          Intent intent = new Intent(FirstActivity.this,SecondActivity.class);
      
          // Put the date values to the intent
          intent.putExtra("Day",mDay);
          intent.putExtra("Month",mMonth);
          intent.putExtra("Year",mYear);
      
          startActivity(intent);
      
      }
      });
      

      【讨论】:

      • 我正在使用 CalendarView。这种方式是否也适用于 CalendarView?
      • 我已经更新了我的答案,网上有很多CalendarViewDatePcker的例子。你应该搜索它并且应该自己尝试而不是要求完整的代码。
      • 感谢我从网上以及我自己的实践中尝试了许多代码,但未能完成所需的事情,然后只有我发布了我自己的问题。下次会尝试更多。谢谢..☺
      猜你喜欢
      • 1970-01-01
      • 2023-03-24
      • 1970-01-01
      • 2018-06-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-13
      相关资源
      最近更新 更多