16
我有一個Fragment
具有TabHost
作爲根佈局如下...片段getArguments()返回null
<?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();
}
}
在EpgEventListFragment
的onCreate(...)
方法,然後我試圖讓論據Bundle
但我總是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(...)
,但我仍然空。我是新使用Fragments
所以我希望有一個簡單的原因,但我沒有拿出任何東西時搜索。
哦,你一定是在開玩笑吧... aaaargh! – Squonk 2013-02-20 01:36:37
有時候只需要另一雙眼睛。謝謝!我最初並沒有傳入參數,所以我在調用'replace(...)'的時候創建了'Fragment'。我有一段時間來接受你的答案,但我會這樣做。再次感謝。 – Squonk 2013-02-20 01:41:09
@Squonk不客氣!我記得有一次我忘了擴展'FragmentActivity'。這是我一生中最好的半小時試圖弄清楚:-) – 2013-02-20 01:45:49