myc_100 2013-09-24 06:31 采纳率: 10%
浏览 4880

隐藏和显示 Fragment 时显示错误的 fragment

第一次我把程序中的fragments的可见性改变了, fragment显示的不是我设置的。
My layout:

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        tools:context=".MainActivity" >

    <fragment
        android:id="@+id/act_main_frag_top_bar"
        class="br.com.myapp.fragments.TopBarFragment"
        android:layout_height="wrap_content"
        android:layout_width="match_parent"/>

    <fragment
        android:id="@+id/act_main_frag_toolbar"
        class="br.com.myapp.fragments.ToolbarFragment"
        android:layout_height="wrap_content"
        android:layout_width="match_parent"/>

    <!-- Tabs -->    
    <fragment
        android:id="@+id/act_main_frag_twitter"
        class="br.com.myapp.fragments.TwitterFragment"
        android:layout_height="match_parent"
        android:layout_width="match_parent"
        android:visibility="gone"/>

    <fragment
        android:id="@+id/act_main_frag_facebook"
        class="br.com.myapp.fragments.FacebookFragment"
        android:layout_height="match_parent"
        android:layout_width="match_parent"
        android:visibility="gone"/>

    <fragment
        android:id="@+id/act_main_frag_tv_show"
        class="br.com.myapp.fragments.TVShowFragment"
        android:layout_height="match_parent"
        android:layout_width="match_parent"
        android:visibility="gone"/>

    <fragment
        android:id="@+id/act_main_frag_info"
        class="br.com.bluepen.mixtv.fragments.InfoFragment"
        android:layout_height="match_parent"
        android:layout_width="match_parent"
        android:visibility="gone"/>
   </LinearLayout>

myActivity:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    FragmentManager manager = getSupportFragmentManager();
    mStreamingFrag = (StreamingFragment) manager.findFragmentById(R.id.act_main_frag_streaming);
    mFacebookFrag = (FacebookFragment) manager.findFragmentById(R.id.act_main_frag_facebook);
    mTwitterFrag = (TwitterFragment) manager.findFragmentById(R.id.act_main_frag_twitter);
    mTVShowFrag = (TVShowFragment) manager.findFragmentById(R.id.act_main_frag_tv_show);
    mInfoFrag = (InfoFragment) manager.findFragmentById(R.id.act_main_frag_info);
    mToolbar = (ToolbarFragment) manager.findFragmentById(R.id.act_main_frag_toolbar);
    mToolbar.setListener(this);

    FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
    transaction.show(mStreamingFrag);
    transaction.commit();
}

在onCreate方法执行后,fragment显示的是 TwitterFragment,而不是我在onCreate方法的最后设置的StreamingFragment 。

  • 写回答

2条回答 默认 最新

  • lvgaga 2016-06-11 07:34
    关注

    我得布局跟你的类似, android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_above="@+id/main_bottom">

        <fragment
            android:id="@+id/mainFragment"
            android:name="com.hsj.messages.fragment.MainFragment"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            tools:layout="@layout/fragment_main" />
    
        <fragment
            android:id="@+id/msglistFragment"
            android:name="com.hsj.messages.fragment.MsgListFragment"
            android:layout_width="match_parent"
            tools:layout="@layout/fragment_msglist"
            android:layout_height="match_parent" />
    
        <fragment
            android:id="@+id/settingFragment"
            android:name="com.hsj.messages.fragment.SettingFragment"
            android:layout_width="match_parent"
            tools:layout="@layout/fragment_setting"
            android:layout_height="match_parent" />
    </RelativeLayout>
    
        显示的也有一些问题
        java代码如下
        mainFragment = (MainFragment) manager.findFragmentById(R.id.mainFragment);
        msgListFragment = (MsgListFragment) manager.findFragmentById(R.id.msglistFragment);
        settingFragment = (SettingFragment) manager.findFragmentById(R.id.settingFragment);
    
                fragmentTransaction.show(mainFragment);
        fragmentTransaction.hide(msgListFragment);
        fragmentTransaction.hide(settingFragment);
                显示的是最后一个fragment
    
    评论

报告相同问题?

悬赏问题

  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)
  • ¥20 matlab yalmip kkt 双层优化问题
  • ¥15 如何在3D高斯飞溅的渲染的场景中获得一个可控的旋转物体
  • ¥88 实在没有想法,需要个思路
  • ¥15 MATLAB报错输入参数太多