CalendarView Clickable Android

Я пытаюсь начать новое действие, когда вы нажимаете на дату в CalendarView, но мое событие, похоже, не срабатывает. Я установил clickable в true и указал onclick (оба в xml)

Это xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" > <CalendarView android:id="@+id/calendarView1" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:clickable="true" android:onClick="CalendarClick" /> </RelativeLayout> 

Это мой код для активности календаря:

  public class CalendarActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_calendar); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.activity_calendar, menu); return true; } public void CalendarClick(View view) { Intent myIntent = new Intent(CalendarActivity.this, MainActivity.class); CalendarActivity.this.startActivity(myIntent); } } 

Solutions Collecting From Web of "CalendarView Clickable Android"

Это прекрасно работает …..

  public class MyActivity extends Activity{ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.newact); CalendarView calendarView=(CalendarView) findViewById(R.id.calendarView1); calendarView.setOnDateChangeListener(new OnDateChangeListener() { @Override public void onSelectedDayChange(CalendarView view, int year, int month, int dayOfMonth) { Toast.makeText(getApplicationContext(), ""+dayOfMonth, 0).show();// TODO Auto-generated method stub } }); } 

И это xml

 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" > <CalendarView android:id="@+id/calendarView1" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" /> </RelativeLayout> 

Используйте это, чтобы узнать, какая дата была нажата

 CalendarView calendarView=(CalendarView) findViewById(R.id.calendarView1); calendarView.setOnDateChangeListener(new OnDateChangeListener() { @Override public void onSelectedDayChange(CalendarView view, int year, int month, int dayOfMonth) { Toast.makeText(getApplicationContext(), ""+dayOfMonth, 0).show();// TODO Auto-generated method stub } }); 

OnGlobalLayoutListener сделает трюк, если вы хотите нажать уже выбранную дату.

 calendarView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener(){ @Override public void onGlobalLayout() { //your code here } });