//第一种:静态创建
//在主布局文件中利用布局文件创建
//在这个布局文件加这个属性android:name="com.example.fragment.LeftFragment"
//一般会是:包名.类名,(包名加上你创建的FragMeant)
//第二中则是代码创建,以下示例
一个Activity 一个LeftFragment碎片,一个fragment_right碎片
//LeftFragment
public class LeftFragment extends Fragment {
private ListView listView_left;
private FragmentManager fragmentManager;
private FragmentTransaction transaction;
private ArrayAdapter adapter;
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
//onCreateView这个重写方法一般是用来生成自己的布局
@Override
public View onCreateView(LayoutInflater inflater,
@Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.left_listview, container, false);
//生成leftFrag自己的布局控件
listView_left = (ListView) view
.findViewById(R.id.listView_leftfragment);
// 获取字符串资源文件
String[] classname = getResources().getStringArray(R.array.calssname);
adapter = new ArrayAdapter(getActivity(),
android.R.layout.simple_list_item_1, classname);
listView_left.setAdapter(adapter);
listView_left.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView> parent, View view,
int position, long id) {
//这里是监听listview点击时将数据传到右碎片
//代码动态创建FragMent核心代码
fragmentManager = getFragmentManager();
transaction = fragmentManager.beginTransaction();
//右碎片RightFragment
RightFragment RightFragment = new RightFragment();
transaction.replace(R.id.fragment_right, RightFragment);
transaction.addToBackStack(null);// 按回退键时可以往回看原来的内容
Bundle bundle = new Bundle();
String classname = adapter.getItem(position).toString();
bundle.putString("classname", classname);
RightFragment.setArguments(bundle);
// 上面两个步骤那个创建先都无所谓,因为下面还要提交事务,所以顺序没什么影响
transaction.commit();
}
});
return view;
}
}
//有碎片RightFragment,这边接收,主要重写onCreateView返回自己的视图
public View onCreateView(LayoutInflater inflater,
@Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
Bundle bundle = getArguments();//接收数据
String classname = bundle.getString("classname");
View view = inflater.inflate(R.layout.Textview, container, false);
//先找到布局,再找布局中的控件
TextView text= (ListView) view
.findViewById(R.id.TextView_rightfragment);
text.setText(classname );
return view;
}
//主布局文件文件
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" >
android:id="@+id/fragment_left"
android:name="com.example.fragment.LeftFragment"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1" />
android:id="@+id/fragment_right"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="3"
android:orientation="vertical" >
//leftFragmeng的布局
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
android:id="@+id/listView_leftfragment"
android:layout_width="match_parent"
android:layout_height="match_parent" >