程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> fragment-Fragment getArguments() 返回空

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了

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved