0

I am trying to update textview when datepicker is selected with some date. But it is textview is not updating. I am taking two Date Picker to update two different textview. Here is my code for updating the TextViews:

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;
    }

}
Dhwani
  • 7,484
  • 17
  • 78
  • 139

1 Answers1

0

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 and family aren't set when you call this, fMonth and brothers are.

Similar reason for the tDateSetListener. So in effect, just reverse the variables set in them.

Your fDateSetListener should have:

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

And your tDateSetListener should have:

fYear = year;
fMonth = monthOfYear;
fDay = dayOfMonth;
updateEndDisplay();
varevarao
  • 2,186
  • 13
  • 26