我正在创建一个表单,它是一个活动中的片段(布局)。在表单中,我有输入字段,用于选择日期和时间。我使用datepicker对话框片段填充日期和时间。是一个单独的片段。
http://developer.android.com/guide/topics/ui/controls/pickers.html
我面临的问题是如何从datepicker片段更新我的表单片段中的输入字段。我确实尝试了这种方法,但我得到了空值。
http://developer.android.com/training/basics/fragments/communicating.html
上面的方法也是正确的方法,或者我应该将日期选择器片段作为内部类添加到我的表单片段中,我可能不会在其他地方使用datepicker。
PS:我是一个菜鸟。非常感谢任何帮助。
解决方案:
由于我使用的是fragmentpageradapter,在我的内部片段中,我使用此
生成了片段列表List<fragment> fragmentList = this.getFragmentManager().getFragments();
创建了一个单例类并添加了一个方法 / 获取表单片段 /
public Fragment getMyEventFragment(List<Fragment> fragmentList){
Fragment myEventFragment =null;
for (int i = 0; i < fragmentList.size(); i++) {
String currentTag = fragmentList.get(i).getTag();
String lastChar = currentTag.substring(currentTag.length() - 1);
System.out.println("the lastchar is " + lastChar);
if (lastChar.equalsIgnoreCase("1")) {
myEventFragment = fragmentList.get(i);
break;
}
}
return myEventFragment;
}
由于我的表单片段位于我的fragmentpageradapater的第二个标签中,因此值为1,因为自动生成的片段标记中的最后一个元素指的是片段位置。
一旦我获得了我的表单片段,我就可以更新相应的输入字段值。
答案 0 :(得分:0)
为每个片段设置标签以启用它们
如何设置Fragment TAG,只能在事务处理时将标签添加到片段
// getSupportFragmentManager() if you use support library
// tag is optional , but you should assign one to call it again
getFragmentManager().beginTransaction().add(android.R.id.content, fragment, "your_tag").commit();
// you can call it any where you want
android.app.FragmentManager fragmentManager = getFragmentManager();
FirstFragment fragment = (FirstFragment) fragmentManager.findFragmentByTag( "your_tag" );
// use fragment to do what ever you want
fragment.update(string);
其他示例如何确定片段,但这次是通过id
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="match_parent">
<fragment class="com.example.android.apis.app.FragmentLayout$TitlesFragment"
android:id="@+id/titles"
android:layout_width="match_parent" android:layout_height="match_parent" />
</FrameLayout>
这里的片段ID是标题 android:id="@+id/titles"
当我想打电话时
TitlesFragment titles= (TitlesFragment)
getSupportFragmentManager().findFragmentById(R.id.titles);
如果你的片段标识符是XML
,这是有效的