DatePicker 不更新 Android 中的 Textview

2023-12-24

当选择某个日期的日期选择器时,我试图更新文本视图。但它的textview 没有更新。我正在使用两个日期选择器来更新两个不同的文本视图。 这是我更新 TextView 的代码:

public class SearchingActivity extends Activity {
    static final int DATE_PICKER_TO = 0;
    static final int DATE_PICKER_FROM = 1;

    private int fYear;
    private int fMonth;
    private int fDay;
    private int tYear;
    private int tMonth;
    private int tDay;
    TextView txtFrom;
    TextView txtTo;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        requestWindowFeature(Window.FEATURE_NO_TITLE);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN);
        setContentView(R.layout.layout_search);
        ImageButton btnFrom = (ImageButton) findViewById(R.id.btnDatePicker1);
        btnFrom.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                showDialog(DATE_PICKER_FROM);
            }
        });
        ImageButton btnTo = (ImageButton) findViewById(R.id.btnDatePicker2);
        btnTo.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                showDialog(DATE_PICKER_TO);
            }
        });
        txtFrom = (TextView) findViewById(R.id.lblsDate);
        txtTo = (TextView) findViewById(R.id.lbleDate);
        Button btnSubmit = (Button) findViewById(R.id.btnSubmitDate);
        btnSubmit.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                Intent intent = new Intent(getApplicationContext(),
                        MixTourListActivity.class);
                String varSDate = txtFrom.getText().toString();
                String varEDate = txtTo.getText().toString();
                intent.putExtra("startDate", varSDate);
                intent.putExtra("endDate", varEDate);
                startActivity(intent);
            }
        });
        final Calendar c = Calendar.getInstance();
        fYear = c.get(Calendar.YEAR);
        fMonth = c.get(Calendar.MONTH);
        fDay = c.get(Calendar.DAY_OF_MONTH);
        tYear = c.get(Calendar.YEAR);
        tMonth = c.get(Calendar.MONTH);
        tDay = c.get(Calendar.DAY_OF_MONTH);
        updateStartDisplay();
        updateEndDisplay();
    }

    private void updateEndDisplay() {
        // TODO Auto-generated method stub
        txtFrom.setText(new StringBuilder()
                // Month is 0 based so add 1
                .append(fMonth + 1).append("-").append(fDay).append("-")
                .append(fYear).append(" "));
    }

    private void updateStartDisplay() {
        // TODO Auto-generated method stub
        txtTo.setText(new StringBuilder()
                // Month is 0 based so add 1
                .append(tMonth + 1).append("-").append(tDay).append("-")
                .append(tYear).append(" "));
    }

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

        public void onDateSet(DatePicker view, int year, int monthOfYear,
                int dayOfMonth) {
            fYear = year;
            fMonth = monthOfYear;
            fDay = dayOfMonth;
            updateStartDisplay();
        }
    };
    private DatePickerDialog.OnDateSetListener tDateSetListener = new DatePickerDialog.OnDateSetListener() {

        public void onDateSet(DatePicker view, int year, int monthOfYear,
                int dayOfMonth) {
            tYear = year;
            tMonth = monthOfYear;
            tDay = dayOfMonth;
            updateEndDisplay();
        }
    };

    @Override
    protected Dialog onCreateDialog(int id) {
        switch (id) {
        case DATE_PICKER_FROM:
            return new DatePickerDialog(this, fDateSetListener, fYear, fMonth,
                    fDay);
        case DATE_PICKER_TO:
            return new DatePickerDialog(this, tDateSetListener, tYear, tMonth,
                    tDay);
        }
        return null;
    }

}

Your fDateSetListener has:

fYear = year;
fMonth = monthOfYear;
fDay = dayOfMonth;
updateStartDisplay();

and updateStartDisplay() has:

txtTo.setText(new StringBuilder()
// Month is 0 based so add 1
.append(tMonth + 1).append("-").append(tDay).append("-")
.append(tYear).append(" "));

So tMonth当你打电话时,家人还没有确定,fMonth和兄弟们。

类似的原因还有tDateSetListener. 所以实际上,只需反转其中设置的变量即可.

Your fDateSetListener应该有:

tYear = year;
tMonth = monthOfYear;
tDay = dayOfMonth;
updateStartDisplay();

和你的tDateSetListener应该有:

fYear = year;
fMonth = monthOfYear;
fDay = dayOfMonth;
updateEndDisplay();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

DatePicker 不更新 Android 中的 Textview 的相关文章

随机推荐