我有一个包含多个标签的活动(使用'固定标签+滑动'样式)。每个选项卡布局都定义为片段xml文件。
例如,我的活动名为ModifyCustActivity
。这使用了一个名为activity_modify_cust.xml
的几乎为空的xml文件。此页面上的每个标签都由各种xml文件表示,例如fragment_modify_cust_basic
和fragment_modify_cust_address
等等。这些片段xml文件中的每一个都包含EditText
s,Spinner
等等。
当活动开始时,我需要能够从活动代码中访问这些视图,因为我需要预先填充它们,并在编辑后获得结果。但是,因为这些视图存在于片段xml文件中,所以我似乎无法在代码中访问它们。有没有办法访问片段xml文件中包含的视图?
答案 0 :(得分:2)
有没有办法访问片段xml文件中包含的视图?
是的,但你的片段应该在XML布局文件中声明,这似乎是你的情况。
例如:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
...">
<fragment
android:name="com.example.MyFragment"
android:id="@+id/my_fragment"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</LinearLayout>
你可以像这样访问片段:
FragmentManager manager = getSupportFragmentManager();
MyFragment fragment = (MyFragment)manager.findFragmentById(R.id.my_fragment);
然后使用fragment
实例,您可以进一步访问您的视图,例如通过从更新某些特定视图的片段调用公共方法。
<强>更新强>
假设您有一个TextView
出现在片段的布局中,并且需要从活动中更新。
让这成为片段类:
public class MyFragment extends Fragment{
private TextView textView;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_layout, null, false);
textView = (TextView)view.findViewById(R.id.textView);
return view;
}
public void updateTextView(String text){
textView.setText(text);
}
}
然后,您可以通过TextView
方法调用活动来更新updateTextView()
:
fragment.updateTextView("text");
答案 1 :(得分:0)
您可以从活动中获取片段视图。如果要将数据从片段发送到另一个片段。您的发件人片段必须与活动进行通信,您的活动可以操纵其他片段中的视图
http://developer.android.com/training/basics/fragments/communicating.html