さて、このコードでは、FlingGestureListener.class を呼び出すタイプのジェスチャ検出器のインスタンス変数を作成していることがわかります。エラーa super interface must be an interface
が発生していますが、タイプ「インターフェイス」として作成しました。 xml レイアウト名を参照すると、FlingGestureListner を実装するため、studentGallery クラスは次のようになり、FlingGestureListener を実装します。
public class GalleryStudent extends Activity implements FlingGestureLitener {
private static final int MAJOR_MOVE = 0;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_galery_student);
final GestureDetector gdt = new GestureDetector(getActivity(),
FlingGestureListener.getInstance(tabSwipeListener));
final ImageView peopleTab = (ImageView)getActivity().findViewById(R.id.activity_galery_student);
peopleTab.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
return gdt.onTouchEvent(event);
}
});
Gallery g = (Gallery) findViewById(R.id.gallery);
g.setAdapter(new ImageAdapter(this));
g.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(@SuppressWarnings("rawtypes") AdapterView parent, View v, int position, long id) {
Toast.makeText(GalleryStudent.this, "" + position, Toast.LENGTH_SHORT).show();
}
});
}
これを使用してクラスに移動しているため、ここで混乱しています:tabSwipeListener.onTabSwipe(true, PLACES_FRAGMENT);
この場合、フラグメントをパラメーターとして使用していますが、私のクラスはフラグメントではありません.これに対応するためにクラスをフラグメントに変更する簡単な方法はありますか?また、cannot be resolved to a type
この場合は onTabSwiperListener です。これは、インターフェイスとして作成した説明から使用した FlingGestureListener です。
public class FlingGestureListener extends SimpleOnGestureListener {
private static final int SWIPE_MIN_DISTANCE = 80;
private static final int SWIPE_THRESHOLD_VELOCITY = 50;
private static final int PEOPLE_FRAGMENT = 0;
private static final int PLACES_FRAGMENT = 2;
private OnTabSwipedListener tabSwipeListener;
private FlingGestureListener(OnTabSwipedListener tabSwipeListener){
this.tabSwipeListener = tabSwipeListener;
}
/**
* Static factory
* @param listener called when tab swiped
* @return
*/
public static FlingGestureListener getInstance(OnTabSwipedListener listener){
return new FlingGestureListener(listener);
}
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY){
if(e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY){
Log.d("SWIPE", "right to left");
tabSwipeListener.onTabSwipe(true, PLACES_FRAGMENT); //sent int to fragment container to switch pager to that view
return true; //Right to left
} else if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY){
Log.d("SWIPE", "left to right");
tabSwipeListener.onTabSwipe(true, PEOPLE_FRAGMENT);
return true; //Left to right
}
//This will test for up and down movement.
if(e1.getY() - e2.getY() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY){
return false; //Bottom to top
} else if (e2.getY() - e1.getY() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY){
return false; //Top to bottom
}
return false;
}
}
これまでご協力いただきありがとうございました。