这是我的主要活动代码:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Display display = getWindowManager().getDefaultDisplay();
//Setting the FileBrowser FrameLayout Settings.
FrameLayout fileBrowserLayout = (FrameLayout) findViewById(R.id.flFBrowser);
FrameLayout previewLayout = (FrameLayout) findViewById(R.id.flPreview);
TextView instructions = (TextView)findViewById(R.id.tvInstructions);
fileBrowserLayout.getLayoutParams().width = display.getWidth()*WidthFileBrowser/100;
previewLayout.getLayoutParams().width = display.getWidth()*WidthPreview/100;
previewLayout.getLayoutParams().height = display.getHeight()*PreviewHeight/100;
instructions.getLayoutParams().width = display.getWidth()*WidthPreview/100;
instructions.getLayoutParams().height = display.getHeight()*InstructionsHeight/100;
instructions.setText(Instructions);
instructions.setTextSize(InstructionTextSize);
instructions.setTextColor(InstructionTextColor);
instructions.setTypeface(Typeface.SANS_SERIF, Typeface.BOLD);
instructions.setGravity(Gravity.CENTER_HORIZONTAL);
//Attempting to set the Fragment
FragmentManager fm = getFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
FileBrowser fb = new FileBrowser();
preview = new Preview();
ft.add(R.id.flFBrowser,fb);
ft.add(R.id.flPreview, preview);
ft.commit();
}
然后这是我的预览片段代码
public class Preview extends Fragment implements ViewFactory,OnTouchListener{
@Override
public boolean onTouch(View v, MotionEvent event) {
System.err.println("Something touched me!");
return true;
}
}
onActivityStarted上有更多的初始化代码,但它与初始化图像处理器有关。
但是我无法弄清楚为什么我的触摸事件没有注册。
有人可以帮助我吗?
答案 0 :(得分:1)
问题是您实际上没有注册onTouchListener
课程中实施的Preview
。我不知道,我不认为(基于API)你可以为Fragments注册一个触摸监听器,但你可以为你拥有的任何视图。
尝试为其中一个FrameLayouts注册onTouchListener。您可以在初始化预览对象后执行此操作:
preview = new Preview();
previewLayout.setOnTouchListener(preview);
这应该可以解决问题。
答案 1 :(得分:0)
就我而言,我有孩子在拦截触摸事件。我想将一个识别器附加到父布局,所以要做到这一点,我需要拦截触摸事件(http://developer.android.com/training/gestures/viewgroup.html#intercept)。我必须对布局进行子类化并覆盖onInterceptTouchEvent()
以将事件传递给我可能附加到布局的任何触摸侦听器。我在一个片段中实现了我的监听器和检测器,监听器将事件转发给检测器。