在某个fragment中隐藏mian_activity.xml中添加的toolbar控件

在某个fragment中隐藏mian_activity.xml中添加的toolbar控件

请问老师这个应该怎么做到呢?是在fragment的class文件中操作还是在mainActivity的class文件中操作呢,又该用什么语句呢

//mainframent

public class MainFragment extends Fragment{



   @Nullable
   @Override
   public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
       return inflater.inflate(R.layout.mainfragment,container,false);

   }
   
}

//mainActivity

class linerclick implements View.OnClickListener{
   @Override
   public void onClick(View v) {
       switch (v.getId()){
           case  R.id.menu_main://首页
               getSupportFragmentManager()
                       .beginTransaction()
                       .show(mMainFragment)
                       .hide(shopFragment)
                       .hide(mapFragment)
                       .hide(mMeFragment)
                       .commit();

               break;

//mainActivity的布局文件

<android.support.v4.widget.DrawerLayout
   xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:app="http://schemas.android.com/apk/res-auto"
   android:id="@+id/drawer_layout"
   android:layout_width="match_parent"
   android:layout_height="match_parent">
<LinearLayout
             android:layout_width="match_parent"
             android:layout_height="match_parent"
             android:orientation="vertical">
   <android.support.v7.widget.Toolbar
       android:id="@+id/toolbar"
       android:layout_width="match_parent"
       android:layout_height="?attr/actionBarSize"
       android:background="?attr/colorPrimary"

       android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
       app:popupTheme="@style/ThemeOverlay.AppCompat.Light"

       />
在此谢谢老师!


正在回答

登陆购买课程后可参与讨论,去登陆

5回答

如果你要实现点击底部菜单项隐藏的话不能放在fragment的onActivityCreated()方法中,这个是加载时调用的。你只能放在父类Activity中,在底部菜单选项点击事件中,编写类似处理。tb为Toolbar。

http://img1.sycdn.imooc.com/climg//598ed1010001f97710020660.jpg

irista23 2017-08-12 22:49:14

你要想在fragment中处理,就要在fragment中找到底部按钮的点击事件,在里面去设置显示模式,简单处理方式是我最上面给你参考代码,在父Activity中的找到底部菜单每一项的点击事件在其中设置显示模式。

@Override
public void onClick(View view) {
    switch (view.getId()){
        case  R.id.menu_main://首页
            tb.setVisibility(View.VISIBLE);
            this.getSupportFragmentManager()
                    .beginTransaction()
                    .show(mMainFragment)
                    .hide(mFindFragmenr)
                    .hide(mMeFragment)
                    .commit();
            break;
        case  R.id.menu_find://发现
            tb.setVisibility(View.GONE);
            this.getSupportFragmentManager()
                    .beginTransaction()
                    .hide(mMainFragment)
                    .show(mFindFragmenr)
                    .hide(mMeFragment)
                    .commit();
            break;
        case  R.id.menu_me://我的
            tb.setVisibility(View.VISIBLE);
            this.getSupportFragmentManager()
                    .beginTransaction()
                    .hide(mMainFragment)
                    .hide(mFindFragmenr)
                    .show(mMeFragment)
                    .commit();
            break;
    }
}


提问者 原野zz 2017-08-12 17:10:19

public class MainFragment extends Fragment{


   @Override
   public void onCreate(@Nullable Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
   }

   @Nullable
   @Override
   public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
       return inflater.inflate(R.layout.mainfragment,container,false);

   }

   @Override
   public void onActivityCreated(@Nullable Bundle savedInstanceState) {
       super.onActivityCreated(savedInstanceState);
       Toolbar toolbar =(Toolbar)getActivity().findViewById(R.id.toolbar);
       toolbar.hideOverflowMenu();
   }
}

http://img1.sycdn.imooc.com/climg//598ec5de0001242604540732.jpg

隐藏掉上面这个toolbar

irista23 2017-08-12 15:08:58

注意需要在这个onActivityCreated(Bundle savedInstanceState)方法中,因为这个方法是在activity的onCreate方法执行完执行这个方法,通知fragment,关联的activity的onCreate方法执行完了,即activity创建完了,可以在这个方法中获取activity中的资源了。

  • 提问者 原野zz #1
    onActivityCreated(Bundle savedInstanceState) 老师 我mainActivity中并没有重写该方法啊。您的意思是要重写一下该方法吗先?
    2017-08-12 15:33:45
  • irista23 回复 提问者 原野zz #2
    onActivityCreated(Bundle savedInstanceState) 这个是Fragment中的方法,在你的Fragment中重写。
    2017-08-12 15:37:27
irista23 2017-08-12 14:49:37

在Fragment中获取父Activity控件参考如下的代码:

Toolbar toolbar =(Toolbar)getActivity().findViewById(R.id.id_toolbar);

取到toolbar后就正常使用就行了。

  • 提问者 原野zz #1
    老师 我好想明白啦 那让toobal不显示的语句是什么呀 toolbar.hide();吗 谢谢老师 嘿嘿
    2017-08-12 15:59:36
  • irista23 回复 提问者 原野zz #2
    嗯 你也可以试试效果~
    2017-08-12 16:00:56
  • 提问者 原野zz 回复 irista23 #3
    老师真棒! 我都想给你发个红包啊啊啊啊 谢谢老师 嘿嘿嘿
    2017-08-12 16:07:31
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师