我正在构建一个具有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