0

日付ピッカーが日付で選択されているときにテキストビューを更新しようとしています。しかし、テキストビューが更新されていません。2 つの異なるテキストビューを更新するために 2 つの Date Picker を使用しています。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;
    }

}
4

1 に答える 1

0

あなたfDateSetListenerが持っている:

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

そしてupdateStartDisplay()持っています:

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

だからtMonth、あなたがこれを呼ぶとき、家族は設定されていません、fMonthそして兄弟は設定されています.

の同様の理由tDateSetListenerしたがって、実際には、それらに設定されている変数を逆にするだけです。

あなたfDateSetListenerが持っている必要があります:

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

そして、あなたtDateSetListenerは持っているべきです:

fYear = year;
fMonth = monthOfYear;
fDay = dayOfMonth;
updateEndDisplay();
于 2013-01-03T18:43:36.223 に答える