2

在 Android 应用程序中,我有两个片段

  1. 带有项目ListView的片段

  2. 带有ImageView的片段

通过回调onListItemSelected,当用户点击一个ListView项时,MainActivity将ImageView推入栈中,带有图片的fragment出现在屏幕上。在这一点上,我希望,由于 ListView 片段不再可见,因此与该片段关联的任何事件都不再被触发。不是这种情况。如果我触摸 ImageView,ListView 项的侦听器仍然会触发。

两个问题:

  1. 有没有办法根据片段可见性自动启用/禁用侦听器?

  2. 如果没有,我猜要走的路是禁用 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);

       }
4

1 回答 1

2

你可以尝试两件事

  1. 将 ImageView 设置为使用触摸事件。

    ImageView.setClickable(true);

  2. 推送新片段时禁用 ListView 上的触摸事件。

    ListView.setClickable(false);

如果您想知道如何知道带有 ImageView 的片段何时被删除,请尝试 setTargetFragment。看看这里:https ://stackoverflow.com/a/13733914/935421

于 2013-09-03T23:58:10.880 回答