2013-05-06 2 views
1

Я пытаюсь создать приложение для планирования, и я пытаюсь сказать моему приложению, чтобы отличать прокрутку и нажатие даты. Когда я прокручиваюсь до определенного месяца, 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; 
} 
} 

ответ

0

Попробуйте return true; в методе onSingleTapUp.

Спасибо.

+0

Эй, я пробовал это, но не получил его на работу – cben90

Смежные вопросы