Tôi có một Fragment
trong đó có một TabHost
như cách bố trí gốc như sau ...Fragment getArguments() trả về 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>
Mã để tạo/cập nhật mỗi Fragment
về nội dung tab như sau .. .
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();
}
}
trong phương pháp onCreate(...)
của EpgEventListFragment
sau đó tôi cố gắng để có được những lý lẽ Bundle
nhưng tôi luôn có được null
cách làm như sau ...
@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);
...
}
Tôi thiếu gì ở đây? Tôi cũng đã thử số trong số onAttach(...)
nhưng tôi vẫn bị vô hiệu. Tôi mới sử dụng Fragments
vì vậy tôi hy vọng có một lý do đơn giản nhưng tôi đã không đưa ra bất cứ điều gì khi tìm kiếm.
Oh bạn đã có được đùa tôi ... aaaargh! – Squonk
Đôi khi tất cả những gì nó cần là một cặp mắt khác. Cảm ơn bạn! Tôi đã không ban đầu đi qua các đối số vì vậy tôi đã tạo ra 'Fragment' trong lệnh gọi' replace (...) '. Có một sự chậm trễ thời gian cho tôi để chấp nhận câu trả lời của bạn nhưng tôi sẽ làm như vậy. Cảm ơn một lần nữa. – Squonk
@Squonk bạn được chào đón! Tôi nhớ lại một lần tôi quên mở rộng 'FragmentActivity'. Đó là nửa giờ tốt nhất của cuộc đời tôi cố gắng tìm ra điều đó :-) –