Android 中的两个 TextView 的 setOnClickListener

setOnClickListener in Android for Two TextViews

我在 Android 中有一个简单的日期选择器应用程序,当我单击第一个 TextView 时它工作正常。 如何使用第二个 TextView 激活同一个日历。一个 TextView 显示长日期,另一个显示短日期

public class MainActivity extends AppCompatActivity {
    private TextView mDisplayLongDate;
    TextView mDisplayShortDate;
    CheckBox checkBoxVisibility;
    private DatePickerDialog.OnDateSetListener mDateSetListener;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mDisplayLongDate = findViewById(R.id.tvLDate);
        mDisplayShortDate = findViewById(R.id.tvSDate);
        //View checkBox = findViewById(R.id.checkBox);
        checkBoxVisibility = findViewById(R.id.checkBox_visibility);
                //boolean isChecked = checkBoxVisibility.isClickable();
        boolean isChecked = checkBoxVisibility.isChecked();
        updateTextVisibility(isChecked);
        checkBoxVisibility.setOnCheckedChangeListener((buttonView, isChecked1) -> {
            //Step 05 - Updating UI according to the currently changed state
            updateTextVisibility(isChecked1);
        });

        mDisplayLongDate.setOnClickListener(view -> {
            Calendar cal = Calendar.getInstance();

使用复选框,TextView 显示长日期和短日期。 我无法单击短日期来编辑日历。如何在这两种情况下激活日历。

String dateLong = monthStr + "/" + day + "/" + year;
            String dateShort = monthStr + "/" + day;

            mDisplayLongDate.setText(dateLong);
            mDisplayShortDate.setText(dateShort);
        };
    }
    private void updateTextVisibility(boolean isChecked) // When checking the trigger (checkbox)
    {
        if (isChecked)
        {
            mDisplayShortDate.setVisibility(View.VISIBLE);
            mDisplayLongDate.setVisibility(View.GONE);
        }
        else
        {
            mDisplayShortDate.setVisibility(View.GONE);
            mDisplayLongDate.setVisibility(View.VISIBLE);
        }

你可以使用这种方法,在你需要的地方调用它。

    private void getCal() {

    Calendar cal = Calendar.getInstance();
    int year = cal.get(Calendar.YEAR);
    int monthStr = cal.get(Calendar.MONTH);
    int day = cal.get(Calendar.DAY_OF_MONTH);
    DatePickerDialog dPDialog = new DatePickerDialog(MainActivity.this, android.R.style.Theme_Holo_Light_Dialog,
            new DatePickerDialog.OnDateSetListener() {
                @RequiresApi(api = Build.VERSION_CODES.N)
                public void onDateSet(DatePicker datepicker, int selectedY, int selectedM, int selectedD) {

                    String[] months = new DateFormatSymbols(Locale.ENGLISH).getMonths();
                    String dateLong = months[selectedM] + "/" + selectedD + "/" + selectedY;
                    String dateShort = months[selectedM] + "/" + selectedD;
                   // String dateLong = (selectedM + 1) + "/" + selectedD + "/" + selectedY;
                    //String dateShort = (selectedM + 1) + "/" + selectedD;
                    mDisplayLongDate.setText(dateLong);
                    mDisplayShortDate.setText(dateShort);

                }
            }, year, monthStr, day);
    dPDialog.show();


}

示例class-

public class MainActivity extends AppCompatActivity {
private TextView mDisplayLongDate;
TextView mDisplayShortDate;
CheckBox checkBoxVisibility;
private DatePickerDialog.OnDateSetListener mDateSetListener;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    mDisplayLongDate = findViewById(R.id.tvLDate);
    mDisplayShortDate = findViewById(R.id.tvSDate);

    mDisplayLongDate.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            getCal();
        }
    });


    mDisplayShortDate.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            getCal();
        }
    });


}

 private void getCal() {

    Calendar cal = Calendar.getInstance();
    int year = cal.get(Calendar.YEAR);
    int monthStr = cal.get(Calendar.MONTH);
    int day = cal.get(Calendar.DAY_OF_MONTH);
    DatePickerDialog dPDialog = new DatePickerDialog(MainActivity.this, android.R.style.Theme_Holo_Light_Dialog,
            new DatePickerDialog.OnDateSetListener() {
                @RequiresApi(api = Build.VERSION_CODES.N)
                public void onDateSet(DatePicker datepicker, int selectedY, int selectedM, int selectedD) {

                    String[] months = new DateFormatSymbols(Locale.ENGLISH).getMonths();
                    String dateLong = months[selectedM] + "/" + selectedD + "/" + selectedY;
                    String dateShort = months[selectedM] + "/" + selectedD;
                   // String dateLong = (selectedM + 1) + "/" + selectedD + "/" + selectedY;
                    //String dateShort = (selectedM + 1) + "/" + selectedD;
                    mDisplayLongDate.setText(dateLong);
                    mDisplayShortDate.setText(dateShort);

                }
            }, year, monthStr, day);
    dPDialog.show();


}
  }