使用片段xml文件中的视图

时间:2013-08-01 12:28:41

标签: android android-fragments

我有一个包含多个标签的活动(使用'固定标签+滑动'样式)。每个选项卡布局都定义为片段xml文件。

例如,我的活动名为ModifyCustActivity。这使用了一个名为activity_modify_cust.xml的几乎为空的xml文件。此页面上的每个标签都由各种xml文件表示,例如fragment_modify_cust_basicfragment_modify_cust_address等等。这些片段xml文件中的每一个都包含EditText s,Spinner等等。

当活动开始时,我需要能够从活动代码中访问这些视图,因为我需要预先填充它们,并在编辑后获得结果。但是,因为这些视图存在于片段xml文件中,所以我似乎无法在代码中访问它们。有没有办法访问片段xml文件中包含的视图?

2 个答案:

答案 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