在Android应用中,我有两个片段:
带有 ListView 项目
带有 ImageView
通过回调onListItemSelected,当用户点击ListView项时,MainActivity会在堆栈上推送ImageView,并且带有图像的片段会出现在屏幕上。此时我希望,由于ListView片段不再可见,因此不再触发与此片段关联的任何事件。不是这种情况。如果我触摸ImageView,ListView项目的监听器仍会触发。
两个问题:
有没有办法根据片段的可见性自动启用/禁用侦听器?
如果没有,我想要的方法是禁用ListView片段视图,然后在按下backButton时重新启用它。如何捕获MainActivity中的backButton事件以重新启用先前禁用的视图?
公共类MainActivity扩展了FragmentActivity实现 ListViewFragment.Callbacks {
[...]
public void onListItemSelected(String str) { FragmentManager fragmentManager = getSupportFragmentManager(); FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); fragmentTransaction.addToBackStack(null); fragmentTransaction.replace(R.id.listView, f); fragmentTransaction.commit(); // disable listView //View lw = getSupportFragmentManager().findFragmentById(R.id.listView).getView().findViewById(R.id.my_listView); //lw.setEnabled(false); }
答案 0 :(得分:2)
你可以尝试两件事
将ImageView设置为使用触摸事件。
ImageView.setClickable(true);
按下新片段时,禁用ListView上的触摸事件。
ListView.setClickable(false);
如果您想知道如何知道何时删除带有ImageView的片段,请尝试setTargetFragment。看看这里:https://stackoverflow.com/a/13733914/935421