【Android】Fragmentを使用した時のTouchEventの取得

Fragmentを使用した時にTouchEventを取得して
処理させようと思う。

とはいっても、
Fragment自体はActivityではないので、
そのままやろうと思ってもだめだ。
なので、
一旦Activity側で受け取って、リスナーを
Fragment側に記述してあげればいい。

Activity側

@Override
protected void onCreate(Bundle savedInstanceState) {

// TODO Put your code here
super.onCreate(savedInstanceState);
setContentView(R.layout.layout2);


//TouchEventをFragmentにセットする//
Fragment01 fragmet01 = new Fragment01();
View view = (View)findViewById(R.id.frameLayout1);
view.setOnTouchListener((Fragment01)fragmet01);
//////////////////////////////

}


ここでやったのが、FragmentはFrameLayoutの上においてあるため、FrameLayoutでViewを指定してあげる。

そして、
Fragment側にも記述してあげる。
public class Fragment01 extends Fragment implements OnTouchListener{


/* (non-Javadoc)
* @see android.app.Fragment#onCreateView(android.view.LayoutInflater, android.view.ViewGroup, android.os.Bundle)
*/
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub

return inflater.inflate(R.layout.layout3,container,false);
}

@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
Log.d("myclass", "onTouch");
return true;
}

}

これで、onTouchイベントがよばれるはずなので、
あとはやりたいことをそこに書いてあげればいい。