Я пытаюсь создать приложение для планирования, и я пытаюсь сказать моему приложению, чтобы отличать прокрутку и нажатие даты. Когда я прокручиваюсь до определенного месяца, setOnDateChangeListener запускается, когда я этого не планировал.CalendarView: различайте прокрутку от крана
Итак, для чего я попытался или собрал: я попытался реализовать onGestureListener (не уверен, что это правильный путь) и используя метод OnSingleTapUp для определения между прокруткой и выбором даты. Я просто попытался поместить метод setOnDateChangeListener в метод OnSingleTapUp, но с тех пор, как я выбираю дату, это не имеет смысла, я технически пытаюсь вызвать setOnDateChangeListener.
Я бы очень признателен за любые указания или направление на другое подобное сообщение.
Благодаря
Cliff B
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.GestureDetector;
import android.view.GestureDetector.OnDoubleTapListener;
import android.view.GestureDetector.OnGestureListener;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.widget.CalendarView;
import android.widget.CalendarView.OnDateChangeListener;
public class MainActivity extends Activity implements OnGestureListener{
//Setting variables
CalendarView calendar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
calendar = (CalendarView) findViewById(R.id.calendarView1);
}
@Override
public boolean onDown(MotionEvent e) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
// TODO Auto-generated method stub
return false;
}
@Override
public void onLongPress(MotionEvent e) {
// TODO Auto-generated method stub
}
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
float distanceY) {
// TODO Auto-generated method stub
return false;
}
@Override
public void onShowPress(MotionEvent e) {
// TODO Auto-generated method stub
}
@Override
public boolean onSingleTapUp(MotionEvent e) {
// TODO Auto-generated method stub
calendar.setOnDateChangeListener(new OnDateChangeListener() {
@Override
public void onSelectedDayChange(CalendarView view, int year,
int month, int dayOfMonth) {
// TODO Auto-generated method stub
Intent intent = new Intent();
intent.setClass(MainActivity.this, TaskSetup.class);
intent.putExtra("data", dayOfMonth);
startActivity(intent);
}
});
return false;
}
}
Эй, я пробовал это, но не получил его на работу – cben90