onClick 序列的问题

Issues with onClick sequence

我在使用 Android Studio 和 运行 时遇到了一些问题,这是由于我缺乏经验。我有一个 Activity 和一个 CalendarView 和一个 Button。按 Button 后,在 CalendarView 中编辑的日期 select 将在下一个 Activity 中设置为 EditText

这行得通,但方式很奇怪。通常,我会 select 来自 CalendarView 的日期,然后当我单击 Button 时,Intent 将开始,但现在完全相反;我必须单击 Button,然后选择日期才能启动 Intent 并重定向到另一个页面。

这是我的代码:

btnDone1 = (Button) findViewById(R.id.btnDone1);
    btnDone1.setOnClickListener(new OnClickListener(){
        public void onClick(View v){
            calendar1.setOnDateChangeListener(new CalendarView.OnDateChangeListener(){
                @Override
                public void onSelectedDayChange(CalendarView view, int year, int month, int dayOfMonth){
                    String date1 = dayOfMonth + "/" + (month + 1) + "/" + year;
                    Intent doneD = new Intent(RentStartActivity.this, SearchActivity.class);
                    doneD.putExtra("Date1", date1);
                    startActivity(doneD);
                }
            });

        }
    });

请告诉我应该用什么方式编码。 感谢您的帮助,谢谢!!

尝试关注

String date1;
        calendar1.setOnDateChangeListener(new CalendarView.OnDateChangeListener(){
            @Override
            public void onSelectedDayChange(CalendarView view, int year, int month, int dayOfMonth){
                date1 = dayOfMonth + "/" + (month + 1) + "/" + year;

            }
        });

        btnDone1 = (Button) findViewById(R.id.btnDone1);
        btnDone1.setOnClickListener(new OnClickListener(){
            public void onClick(View v){

                Intent doneD = new Intent(RentStartActivity.this, SearchActivity.class);
                doneD.putExtra("Date1", date1);
                startActivity(doneD);
            }
        });

SearchActivity获取日期。

Intent intent = getIntent();
        String date = intent.getStringExtra("Date1");

你在按钮的OnClickListener里面设置了OnDateChangedListener,所以它只会在你点击按钮后监听。据我了解,您想做这样的事情:

btnDone1 = (Button) findViewById(R.id.btnDone1);
calendar1.setOnDateChangeListener(new CalendarView.OnDateChangeListener(){
    @Override
    public void onSelectedDayChange(CalendarView view, int year, int month, int dayOfMonth){
        btnDone1.setOnClickListener(new OnClickListener(){
            public void onClick(View v){
                String date1 = dayOfMonth + "/" + (month + 1) + "/" + year;
                Intent doneD = new Intent(RentStartActivity.this, SearchActivity.class);
                doneD.putExtra("Date1", date1);
                startActivity(doneD);
            }
        });
    }
});

单击按钮后,此代码将所选日期发送到 SearchActivity