阅读日历日期

reading Calendar date

我正在使用此方法从日历中读取日期并将其显示在 TextView 上,但它只显示 25:10:2015 并且当我选择另一个日期时它不会改变。我写了事件来更改日期,但我不知道出了什么问题: 包裹 com.example.user.calendar;

import android.app.DatePickerDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.DatePicker;
import android.widget.TextView;

import java.util.Calendar;

public class MainActivity extends AppCompatActivity {


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        final TextView datee=(TextView)findViewById(R.id.textView2);
        final Calendar c=Calendar.getInstance();
        final int year =c.get(Calendar.YEAR);
        final int month =c.get(Calendar.MONTH);
        final int day =c.get(Calendar.DAY_OF_MONTH);
        datee.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                DatePickerDialog datepicker = new DatePickerDialog(MainActivity.this, new DatePickerDialog.OnDateSetListener() {
                    @Override
                    public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
                        datee.setText(" ");
                        datee.setText(year + ":" + month + ":" + day);
                       // dayyy=datee.getText().toString();
                    }


                }, year, month, day);
                datepicker.setTitle("select date");
                datepicker.show();

            }
        });


    }
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    private ImageButton ib;
    private Calendar cal;
    private int day;
    private int month;
    private int year;
    private EditText et;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ib = (ImageButton) findViewById(R.id.imageButton1);
        cal = Calendar.getInstance();
        day = cal.get(Calendar.DAY_OF_MONTH);
        month = cal.get(Calendar.MONTH);
        year = cal.get(Calendar.YEAR);
        et = (EditText) findViewById(R.id.editText);
        ib.setOnClickListener((View.OnClickListener) this);
    }
@Override
    public void onClick(View v) {
        showDialog(0);
    }
    @Override
    @Deprecated
    protected Dialog onCreateDialog(int id) {
        return new DatePickerDialog(this, datePickerListener, year, month, day);
    }

    private DatePickerDialog.OnDateSetListener datePickerListener = new DatePickerDialog.OnDateSetListener() {
        public void onDateSet(DatePicker view, int selectedYear,
                              int selectedMonth, int selectedDay) {
            et.setText(selectedDay + " / " + (selectedMonth + 1) + " / "
                    + selectedYear);
        }
    };
}

尝试一下,希望它能奏效。

   private DatePickerDialog.OnDateSetListener datePickerListener 
            = new DatePickerDialog.OnDateSetListener() {

    // when dialog box is closed, below method will be called.
    public void onDateSet(DatePicker view, int selectedYear,
            int selectedMonth, int selectedDay) {
        year = selectedYear;
        month = selectedMonth;
        day = selectedDay;

        // set selected date into textview
        tvDisplayDate.setText(new StringBuilder().append(month + 1)
           .append("-").append(day).append("-").append(year)
           .append(" "));

        // set selected date into datepicker also
        dpResult.init(year, month, day, null);

    }
};

当您 'setText' 时,您正在使用 'Calendar.getInstance();' 中的变量,这些变量根据当前的日期、月份和年份设置这些变量。相反,您应该使用 datePicker 设置的变量。

而不是:

datee.setText(year + ":" + month + ":" + day);

使用这个:

datee.setText(year + ":" + monthOfYear + ":" + dayOfMonth);

另外,Calendar.Month 返回的月份差一(10 而不是 11),因为 Java 日历从 0 到 11。所以你必须在月份上加 1得到当月的正确数字。但是datePicker返回的月份值(dayOfMonth)默认应该是正确的。