为片段设置OnTouchListener

时间:2013-12-15 07:28:33

标签: android android-fragments ontouchlistener start-activity

我有一个包含多个片段的应用程序

对于每个片段,我想在触摸片段时执行一些操作

我有一个为我绘制位图的片段,我希望这个片段在触摸时全屏显示 该片段具有将其设置为位图的图像视图 我尝试在视图的片段中设置OnTouchListener,但我不希望这样,因为每次用户按下屏幕时,即使它已经全屏显示,它也将启动活动 如何在片段

的主要活动中添加OnTouchListener

这是我的代码

主要活动

我正在做这个

 public class MainActivity extends Activity  {
                     DrawBitmap drawView;           
                     drawView = (DrawBitmap ) getFragmentManager().findFragmentById(R.id.drawid);

                    }

DrawBitmap 类中,这是我的片段

   public class DrawBitmap extends Fragment  {

    @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

    View v = inflater.inflate(R.layout.imgid, container, true);

    v.setOnTouchListener(new View.OnTouchListener() {

        @Override
          public boolean onTouch(View v, MotionEvent event) {
            int action = event.getAction();
              switch(action){
                  case MotionEvent.ACTION_DOWN:

                      Intent intent = new Intent(getActivity(), SecondActivity.class);
                      startActivity(intent);
                              break;

              }

              return false;
          }

    });
    return v;


}

  }
SecondActivity

中的

                public class SecondActivity extends Activity  {
                     DrawBitmap drawView;           
                     drawView = (DrawBitmap ) getFragmentManager().findFragmentById(R.id.drawid_full);

                    }

我希望能够在主要活动

中为OnTouchListener添加drawView

1 个答案:

答案 0 :(得分:0)

片段不是视图,您无法直接在其上添加此类侦听器。

解决方案是覆盖“按下键”样式方法钩子并抛出自己的事件。不幸的是,片段也没有这个钩子。

因此,最后一个应该完美工作的选项是在方法getView()(即片段的根视图)中片段返回的视图上添加侦听器。然后,您将不得不在树视图层次结构中处理一些事件消耗,但它应该可以工作。