加载片段时从片段加载视图

时间:2016-06-22 17:29:14

标签: android android-fragments

我有按钮去加载(加载)这个新片段

 buttonToFragment1.setOnClickListener(
                new OnClickListener() {
                    @Override
                    public void onClick(View arg0) {

                       // return inflater.inflate( R.layout.fragment_one, container, false);
                        Fragment fr = new FragmentOne();
                        FragmentManager fm = getFragmentManager();
                        FragmentTransaction fragmentTransaction = fm.beginTransaction();
                        fragmentTransaction.replace(R.id.fragment_awal, fr);
                        fragmentTransaction.commit();


                    }
                }
        );

当前片段( R.id.fragment_awal )现在已替换为已加载的新片段( R.id.fragment_one ),其中包含布局(fragment_one.xml) :

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:background="#00c4ff">

    <TextView
        android:id="@+id/textView1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:text="Ini fragment 1"
        android:textStyle="bold" />

</LinearLayout>

,班级是:

public class FragmentOne extends Fragment {
    @Override
    public View onCreateView(LayoutInflater inflater,ViewGroup container, Bundle savedInstanceState) {
        //Inflate the layout for this fragment
        return inflater.inflate( R.layout.fragment_one, container, false);
    }
}

我的问题是如何加载此TextView1以便我可以这样做:

TextView textFragment = (TextView)findViewById(R.id.textView1);
textFragment.setText(" new text");

基本上将文本设置为新加载片段内的视图。

编辑:我可以知道之前是谁回答了这个问题吗?基本上他确实回答了这个问题,我只是在某种程度上如此困惑。他刚刚删除了答案。我想接受他的回答。

2 个答案:

答案 0 :(得分:1)

Fragments本质上是包含视图层次结构的视图容器。将片段插入视图层次结构时,它必须以活动为根。在任何给定时间可以有更多0或更多的片段活跃。

用松散的话说,你用另一个片段(FragmentOne)的视图替换当前视图。

要访问ID为TextView的{​​{1}},您需要使用片段的当前视图来限定textView1方法。

将您的片段代码更改为:

findViewById

答案 1 :(得分:-1)

您需要对布局进行充气,之后您可以引用TextView

@Override
public View onCreateView(LayoutInflater inflater,ViewGroup container, Bundle savedInstanceState) {
    //Inflate the layout for this fragment
    View view = inflater.inflate( R.layout.fragment_one, container, false);

    TextView textFragment = (TextView) view.findViewById(R.id.textView1);
    textFragment.setText(" new text");

    return view;
}