在显示片段时,防止点击活动中的按钮
我在Activity
和Fragment
之间的交互中遇到问题。
我有一个main
Activity
并与布局按钮和文本输入活动。 当我在main
Activity
打开Fragment
时,我仍然可以单击Activity
一个按钮并再次打开Fragment
,或者在文本输入中输入文本。
我一直在寻找两个小时的帮助,我还没有找到答案!
这就是我如何从Activity
打开Fragment
:
FragmentManager fragmentManager = getFragmentManager(); FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); SignUp fragment = new SignUp(); fragmentTransaction.add(R.id.fragment_content, fragment); fragmentTransaction.commit();
这是图片: 图片
Thx所有。 我发现解决方案像一个jjm说:
“使用两个片段可能会更有效,其中一个片段中包含当前处于活动状态的控件以及当前的片段,第一个片段中的按钮可以告诉活动显示第二个片段。
我只是创建具有活动组件的新片段并替换片段。 但我仍然不明白为什么我们可以通过片段布局单击活动布局上的按钮? 为什么它是有用的?
我面临同样的问题,并寻找几个小时找到解决方案或原因,我发现它。
向活动添加片段时,片段和活动的功能都将响应屏幕上的触摸。
如果你不想通过片段触摸,只需在片段的onViewCreated函数中创建一个空的setOnTouchListener并完成。
Java中的代码
@Override protected void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(v, savedInstanceState); view.setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { return true; } }); }
代码在Kotlin
override fun onViewCreated(view: View?, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) view!!.setOnTouchListener { view, motionEvent -> return@setOnTouchListener true } }