fragment-Fragment getArguments() 返回空

问题描述

Fragment getArguments() 返回空

有一个Fragment其中有一个作为根布局的tabHost:

<?xml version="1.0" encoding="utf-8"?>
<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/tabhost"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

    <LinearLayout
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">

        <TabWidget
            android:id="@android:id/tabs"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" />

        <FrameLayout
            android:id="@android:id/tabcontent"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent">

            <FrameLayout
                android:id="@+id/tab_1"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent" />

            <!-- More FrameLayouts here - each are placeholders for Fragments -->    

        </FrameLayout>
    </LinearLayout>
</TabHost>

创建和更新Fragment的代码:

private void updateTab(String tabId, int placeholder) {
    FragmentManager fm = getFragmentManager();
    if (fm.findFragmentByTag(tabId) == null) {
        Bundle arguments = new Bundle();
        arguments.putInt("current_day", mCurrentTab);
        EpgEventListFragment fragment = new EpgEventListFragment();
        fragment.setArguments(arguments);

        fm.beginTransaction()
                .replace(placeholder, new EpgEventListFragment(), tabId)
                .commit();
    }
}

EpgEventListFragmentonCreate(...)方法中,我在获取参数Bunble的时候总是得到null:

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

    Bundle arguments = getArguments();
    if (arguments == null)
        Toast.makeText(getActivity(), "Arguments is NULL", Toast.LENGTH_LONG).show();
    else
        mCurrentDay = getArguments().getInt("current_day", 0);

    ...
}

不知道问题在哪?

我还试过在onAttach(...)中获取getArguments(),但是结果都一样,返回null。

请各位大侠帮忙解决一下哦。

解决方案

fm.beginTransaction()
.replace(placeholder, new EpgEventListFragment(), tabId)
.commit();
这里有问题, 你又new了一个fragment 那么EpgEventListFragment fragment = new EpgEventListFragment();
fragment.setArguments(arguments); 这个fragment 完全没有用。
你修改成
fm.beginTransaction()
.replace(placeholder, fragment , tabId)
.commit();用该就OK了

解决方案二:

看起来像是逻辑顺序的问题,你的 updateTab 是在哪里初始化的呢?

解决方案三:

必须是空,你又没加入任何fragment

解决方案四:

加入任何fragment

解决方案五:

   fm.beginTransaction()
            .replace(placeholder, fragment, tabId)
            .commit();
时间: 2025-01-25 12:12:26

fragment-Fragment getArguments() 返回空的相关文章

fragment-Fragment里的getArguments()返回空

问题描述 Fragment里的getArguments()返回空 activity1传值到activity2,fragment是在activity2里面的一部分,进去activity2 fragment就显示了,这样是不是因为他们同步了所以就拿不到东西? setArguments()应该是在activity2里吧?我想让fragment拿到1传给2的值,该怎么做?只需要activity2 setArguments()然后fragment getArguments()就行了么? 我就是这样做的问什

android fragment点击返回键实现内容切换?

问题描述 android fragment点击返回键实现内容切换? 我有一个fragment,上有一个button和textview,默认button是隐藏的,通过点击菜单栏上的一个详细信息的按钮,将button显示出来,现在有没有办法通过点击返回键实现返回上一个只有textview的页面??? 解决方案 Fragment本身也有一个类似Activity的后台管理栈,如果要通过点击返回返回上一个fragment,那么需要使得隐藏button和非隐藏button的Fragmet 是两个不同的实例,

bug-Android Fragment 监听返回

问题描述 Android Fragment 监听返回 我在Activity里面写了四个 Fragment ,四个Fragment对应四个webview.然后在Activity监听webview的返回键 现在出了一个bug就是我在 默认一开始进入AFragment里面,然后我什么都不操作,进入BFragment 也什么都不做,再返回AFragment 的时候webview的canback 已经没效果了 直接进入退出方法 解决方案 1.你进入BFragment也什么都不做,那么BFragment中的

xmlhttprequest-cocos2d XMLHttpRequest post返回空

问题描述 cocos2d XMLHttpRequest post返回空 local function onReadyStateChange() local jsonData = xhr.response --这里返回为空 print("--login--jsonData--",jsonData,"---",xhr.status) end local sendData = "username="..username.."&pass

应用-CreateWindow()调用失败返回空句柄,而GetLastError却返回0!

问题描述 CreateWindow()调用失败返回空句柄,而GetLastError却返回0! 下面一段代码我是按照某本书上抄的, #include /////////////////////////////窗口过程声明/////////////////////////////////// LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); /////////////////////////////填充窗口类的函数声明///////////

android asynctask-Android ProgressDialog返回空

问题描述 Android ProgressDialog返回空 想要做一个进程对话框用在JSON捕捉数据时.但是返回空值.代码: class NetWork extends AsyncTask> { private ProgressDialog pd; public void Network() { try { ServiceStations service = new ServiceStations(); service.load(WorkshopActivity.this.getApplica

关于线程内创建socket create函数返回空的情况。。。。

问题描述 关于线程内创建socket create函数返回空的情况.... 解决方案 你只是new了一个CSocket,m_hSocket有值了,但是没有看到你代码里有create的调用,create创建的代码写在哪里?

Android 利用mediarecorder录制视频后用ThumbnailUtils类切图返回空

问题描述 Android 利用mediarecorder录制视频后用ThumbnailUtils类切图返回空 如题,因为兼容性问题,将录制时候的MediaRecorder参数如下: recorder = new MediaRecorder(); recorder.setVideoSource(MediaRecorder.VideoSource.CAMERA); recorder.setAudioSource(MediaRecorder.AudioSource.MIC); //指定OutputFo

http-php执行时间过长,返回空

问题描述 php执行时间过长,返回空 <?php for($i=0;$i //这里执行一些耗时的操作 sleep(1); } echo '1'; ?> 如上代码,设置max_execution_time时间为300秒,在浏览器中访问,100秒后会输出结果,但是在代码中通过WinHttpRequest读取,一般30秒后就会返回空[未设置SetTimeouts].