2、然后、再判断碎片是静态装入还是动态装入呢?? 若随着宿主Activity一同初始化显示的碎片,则为静态装入,若是经过触发哪个事件才会产生另一个碎片
则为动态装入。
3、得知装入方式后,若是静态装入的,则只需要指定关联的Activity中布局文件碎片容器为<fragment />,并且记住要指定name属性,指定指向的碎片对象
若是动态装入的,则需要到关联的Activity中去开启一个事务,动态将碎片对象装入到我们指定id布局文件的容器中即可
代码如下:
//1、创建FragmentManager对象
fManager=getFragmentManager();
//2、开启事务,Fragment是基于事务的
ft=fManager.beginTransaction();
//3、操作片段,添加,替换,删除
Fragment fragment=new FirstFragment();
ft.add(R.id.left_fragment,fragment, "first");//tag起到了标识的作用,标识不同的Fragment,第一个参数是表示把该片段放在Activity的
哪个位置,也就是在Fragment所关联的Activity布局文件的中某个指定位置的容器的id,
//例如我是把该碎片放在我的Activity_main中的左边的单帧布局容器中内容
//4、提交事务
ft.addToBackStack("two");//把添加碎片的事务也保存到回退栈中,实现按钮推到原先未修改的页面
ft.commit();
4、确定了怎么装入后,然后就是简单创建我们的碎片对象然后绑定布局即可
1、创建一个class去继承Fragment及子类
2、然后去重写OnCreateView方法,通过Inflate方法,将我们绑定的布局文件转化成一个View对象,并显示来即可。
利用一个"先整体,后局部"思想。
1、首先、判断我关联的Activity中有几个Fragment碎片,也是我关联的Activity被划分几个碎片,有几个碎片就有几个碎片容器。
2、然后、再判断碎片是静态装入还是动态装入呢?? 若随着宿主Activity一同初始化显示的碎片,则为静态装入,若是经过触发哪个事件才会产生另一个碎片
则为动态装入。
3、得知装入方式后,若是静态装入的,则只需要指定关联的Activity中布局文件碎片容器为<fragment />,并且记住要指定name属性,指定指向的碎片对象
若是动态装入的,则需要到关联的Activity中去开启一个事务,动态将碎片对象装入到我们指定id布局文件的容器中即可
代码如下:
//1、创建FragmentManager对象
fManager=getFragmentManager();
//2、开启事务,Fragment是基于事务的
ft=fManager.beginTransaction();
//3、操作片段,添加,替换,删除
Fragment fragment=new FirstFragment();
ft.add(R.id.left_fragment,fragment, "first");//tag起到了标识的作用,标识不同的Fragment,第一个参数是表示把该片段放在Activity的
哪个位置,也就是在Fragment所关联的Activity布局文件的中某个指定位置的容器的id,
//例如我是把该碎片放在我的Activity_main中的左边的单帧布局容器中内容
//4、提交事务
ft.addToBackStack("two");//把添加碎片的事务也保存到回退栈中,实现按钮推到原先未修改的页面
ft.commit();
4、确定了怎么装入后,然后就是简单创建我们的碎片对象然后绑定布局即可
1、创建一个class去继承Fragment及子类
2、然后去重写OnCreateView方法,通过Inflate方法,将我们绑定的布局文件转化成一个View对象,并显示来即可。
package com.zhongqihong.testfragmentapp;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
package com.zhongqihong.testfragmentapp;
import android.annotation.SuppressLint;
import android.app.Fragment;
import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;
@SuppressLint("NewApi")
public class FirstFragment extends Fragment{
private FragmentManager fManager;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v=inflater.inflate(R.layout.left_fragment, container,false);
Button btn=(Button) v.findViewById(R.id.display);
Button btn2=(Button) v.findViewById(R.id.nodisplay);
fManager=getFragmentManager();
btn2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
FragmentTransaction ft=fManager.beginTransaction();
ft.remove(fManager.findFragmentByTag("center"));
ft.commit();
}
});
btn.setOnClickListener(new OnClickListener() {
@SuppressLint("NewApi")
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
//在左边的碎片中获取按钮去动态的装入第二碎片
FragmentTransaction ft=fManager.beginTransaction();
ft.replace(R.id.center_fragment, new CenterListFragment(), "center");
ft.commit();
}
});
return v;
}
}
package com.zhongqihong.testfragmentapp;
import android.annotation.SuppressLint;
import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.app.ListFragment;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
@SuppressLint("NewApi")
public class CenterListFragment extends ListFragment{
@Override
public void onListItemClick(ListView l, View v, int position, long id) {//该方法是监听ListFragment中每个Item点击事件
RightFragment fRightFragment=new RightFragment();
String content=l.getAdapter().getItem(position).toString();
Bundle bundle=new Bundle();
bundle.putString("item", content);
fRightFragment.setArguments(bundle);
FragmentManager fm=getFragmentManager();
FragmentTransaction ft=fm.beginTransaction();
ft.replace(R.id.right_fragment, fRightFragment, "right");
ft.commit();
}
@Override
public void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
String [] data=new String[30];
for (int i = 0; i < data.length; i++) {
data[i]="item"+i;
}
ArrayAdapter<String> adapter=new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, data);
setListAdapter(adapter);
}
}
package com.zhongqihong.testfragmentapp;
import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
public class RightFragment extends Fragment{
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v=inflater.inflate(R.layout.right_fragment, container, false);
TextView tv=(TextView) v.findViewById(R.id.tv);
Bundle bundle=getArguments();
String str= bundle.get("item").toString();
tv.setText(str);
return v;
}
}