根据Fragment可见性自动禁用/启用侦听器

时间:2013-09-03 23:55:34

标签: android android-fragments listener android-fragmentactivity onitemclicklistener

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

  1. 带有 ListView 项目

  2. 的片段
  3. 带有 ImageView

  4. 的片段

    通过回调onListItemSelected,当用户点击ListView项时,MainActivity会在堆栈上推送ImageView,并且带有图像的片段会出现在屏幕上。此时我希望,由于ListView片段不再可见,因此不再触发与此片段关联的任何事件。不是这种情况。如果我触摸ImageView,ListView项目的监听器仍会触发。

    两个问题:

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

    2. 如果没有,我想要的方法是禁用ListView片段视图,然后在按下backButton时重新启用它。如何捕获MainActivity中的backButton事件以重新启用先前禁用的视图?

    3.   

      公共类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);
      
             }
      

1 个答案:

答案 0 :(得分:2)

你可以尝试两件事

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

    ImageView.setClickable(true);

  2. 按下新片段时,禁用ListView上的触摸事件。

    ListView.setClickable(false);

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