我有按钮去加载(加载)这个新片段
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");
基本上将文本设置为新加载片段内的视图。
编辑:我可以知道之前是谁回答了这个问题吗?基本上他确实回答了这个问题,我只是在某种程度上如此困惑。他刚刚删除了答案。我想接受他的回答。
答案 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;
}