2 myc 100 myc_100 于 2013.09.24 14:31 提问

隐藏和显示 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个回答

wang84100
wang84100   2016.06.11 15: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
wang84100
wang84100   2016.06.11 15:39

不知道你解决了没有,我得刚解决 主要commit();

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
Android Fragment 隐藏或显示时调用的生命周期方法
Android Fragment 隐藏或显示时调用的生命周期方法 我的第一篇博客,大家多多关照,转载请注明出处,谢谢。 大家在做Fragment切换的时候,比如在别的页面增加了购物车的商品,在进入购物车这个Fragment的时候要进行数据的刷新,看数据是多了还是少了,我之前也碰到这个问题,一直在想,有没有Fragment的生命周期里的方法是在Fragment显示隐藏时调用的。现在终于解决了,和大家
Android Fragment隐藏显示调用的方法
//在Activity中加载显示隐藏Fragment import android.app.Activity; import android.app.FragmentManager; import android.app.FragmentTransaction; import android.content.Intent; import android.os.Bundle; import com
Fragment 显示隐藏回调
今天来说一下Fragment的显示隐藏的回调 和 如何拿到当前activity 正在显示的Fragment对象;fragment 无非两种控制方式: 1.在viewpager 中显示左右滑动显示隐藏; 2.利用FragmentTransation 的show 和 hide显示隐藏;1.在viewpager中显示:新建一个BaseFragment,在BaseFragment 中添加以下代码就可以实
fragment 的隐藏及界面切换的效果
在前文中的效果中(http://blog.csdn.net/antimage08/article/details/50759279),点击屏幕下方的 TextView 以此来实现 5 种 fragment 界面的切换。        由于网络数据的加载存在于不同的界面之中,当快速的切换界面时,就会出现程序的出错。因为快速的切换时,当前界面的数据还在读取,就切换到下一个界面,下一个界面也开始加载数
Fragment的隐藏与显示
package com.bwie.helpdemo; import com.bwie.fragment.BillFrag; import com.bwie.fragment.IndexFrag; import com.bwie.fragment.TaskFrag; import android.os.Bundle; import android.app.Activity; im
安卓 Fragment显示和隐藏 与 onResume
测试结论: Fragment创建后附加到activity之后,fragemnt本身的显示和隐藏并不会触发onResume 附属的activity的显示和隐藏触发activity的onResume,fragment的onResume也会被触发
Fragment:判断是否显示当前Fragment viewpager ;Fragment监听按键点击事件;显示隐藏事件
public void setUserVisibleHint(boolean isVisibleToUser) { super.setUserVisibleHint(isVisibleToUser); if (isVisibleToUser) { //相当于Fragment的onResume } else {
Android开发---Fragment可见/不可见时的生命周期回调函数
点击打开链接
Android基础--浅谈Fragment的状态可见与不可见
前言: 在项目中,我们经常会遇到在Fragment可见也就是获取焦点的时候,重新加载数据或者进行其他设置.但是Fragment本身是没有像Activity一样的onPause()和onResum()方法.那么问题来了,我们怎么才能知道fragment是可见还是不可见的呢?放心,谷歌为我们提供了两个方法,分别是setUserVisibleHint和onHiddenChanged这两个方法,注意这两个
Fragment中显示隐藏Activity中的view
在fragment中显示隐藏activity中的某个view,另外在切换acitvity的时候也需要做activity中view的显示和隐藏。 显示隐藏 getActivity().findViewById(R.id.item).setVisibility(View.VISIBLE); getActivity().findViewById(R.id.item).setVisibility(V