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 shape_predictor_68_face_landmarks.dat
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料
  • ¥15 使用R语言marginaleffects包进行边际效应图绘制