我正在构建一个应用程序,该应用程序MainActivity extends FragmentActivity
使用CalendarFragment extends Fragment
由任意数量的ShiftRowFragment extends Fragment
.
我想构建一个方法来动态地将 a 添加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
- 保存字符串值,例如“Jan.”、“Feb.”等。tvDateIconDay
- 保存字符串值,例如“Mon.”、“Tue.”等。tvExpiration
- 保存一个字符串值,例如“今天”、“明天”、“3 天内”等。另外,我需要将
LinearLayout
包含上述内容的父级上的标记设置TextViews
为某种索引,以便我可以访问Fragment
的子级。
我怎样才能修复我的addDay()
方法来做我需要做的事情?