当前位置:  开发笔记 > 编程语言 > 正文

如何从Fragment Android中禁用或隐藏抽屉布局

如何解决《如何从FragmentAndroid中禁用或隐藏抽屉布局》经验,为你挑选了1个好方法。

我的应用程序中有10个不同的片段.我需要在几个片段中隐藏导航抽屉(抽屉布局),如何从片段中访问抽屉布局并隐藏它?我知道我们需要在活动中使用mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);但是如何在片段中使用它?



1> Cem Philipp ..:

您可以在片段中执行以下操作:

private MainActivity main;

@Override
    public void onAttach(Activity activity) {
        super.onAttach(activity);
        main = (MainActivity) activity;
    }

你绝对应该避免这个!

一个mutch更好的解决方案是使用接口在Main和Fragment之间进行通信.你最终会得到这样的东西:

public interface MyInterface {
 public void lockDrawer();
 public void unlockDrawer();
}

主要:

public class DetailViewActivity extends AppCompatActivity implements MyInterface {
 @Override
    public void lockDrawer() {         
      mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
    }

 @Override
    public void unlockDrawer() {
     mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED);
    }

}

分段:

   public class MyFragment extends Fragment {
     private MyInterface myInterface;

     @Override
     public void onAttach(Activity activity) {
      super.onAttach(activity);
       try {
        myInterface = (MyInterface) activity;
           } catch (ClassCastException e) {
              throw new ClassCastException(activity.toString() + " must implement MyInterface");
            }
        }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        myInterface.lockDrawer();
        return inflater.inflate(R.layout.example_fragment, container, false);
    }

    @Override
    public void onDestroyView() {
        super.onDestroyView();
        myInterface.unlockDrawer();
    }

}

为什么这是最佳解决方案:如果您执行类似((HomeActivity)mActivity的操作),您将无法重复使用Fragment.会有一个ClassCastException.为了重用你的Fragment,你应该使用一个接口而不是为你强制转换MainActivity.因此,每个将使用您的Frament的Activity都可以简单地实现此接口.即使没有DrawerLayout,你也可以使用它.所以最大的努力是可重用性.

推荐阅读
手机用户2402852307
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有