我正在構建一個具有MainActivity extends FragmentActivity
的應用程序,該應用程序使用由任意數量的ShiftRowFragment extends Fragment
填充的CalendarFragment extends Fragment
。將片段動態添加到其他片段的方法
我想構建一個方法來動態地將ShiftRowFragment
添加到CalendarFragment
。 ShiftRowFragment
包含動態值,如日期和時間爲String
。
這裏是我的CalendarFragment.java
:
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTransaction;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
public class CalendarFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
addDay();
addDay();
View v = inflater.inflate(R.layout.calendar_fragment, container, false);
return v;
}
private void addDay() {
ShiftRowFragment shiftFragment = new ShiftRowFragment();
FragmentTransaction transaction = getChildFragmentManager()
.beginTransaction();
transaction.add(R.id.llShifts, shiftFragment).commit();
}
}
這裏是ShiftRowFragment.java
的樣子:
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
public class ShiftRowFragment extends Fragment {
public static ShiftRowFragment newInstance(int index) {
ShiftRowFragment f = new ShiftRowFragment();
Bundle args = new Bundle();
args.putInt("index", index);
f.setArguments(args);
return f;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.shiftrow_fragment, container,
false);
// load calendar
return view;
}
}
坦率地說,我很困惑,我讀過的文檔。 newInstance
方法ShiftRowFragment
應該發生某些事情,但我不確定究竟是什麼。當前的代碼顯示了兩個帶有默認值的ShiftRow(在shiftrow_fragment.xml文件中指定)。
最後,shiftrow_fragment.xml
文件包含以下需要動態填充的TextViews
。
tvDateIconMonth
- 保存一個字符串值,如 「一月」, 「二月」 等tvDateIconDay
- 保存一個字符串值,如 「星期一」, 「星期二」,等tvExpiration
- 保存一個字符串值,如「今天」,「明天」,「3天」等另外,我需要設置標籤上包含父
LinearLayout
以上TextViews
到某種指數,所以我可以訪問Fragment
的孩子。
如何解決我的addDay()
方法做什麼,我需要做什麼?
從來沒有過的日期。他們不是線程安全的。您可以輕鬆傳遞較長的時間戳並在片段中創建一個日期對象。如果你想通過日期使用Joda DateTime對象,它們比Date對象好得多。 – Ge3ng