微信fragmn android,关于Fragment的三个用法

fragment中其他类大同小异,就MainActivity类不同,其中有三种方法:

第一种:

首先要继承FragmentActivity然后利用显隐的方法操作fragment

private RadioGroup radioGroup;

private FragmentManager manager;

private Fragment01 fragment01;

private Fragment02 fragment02;

private Fragment03 fragment03;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

//获取资源ID

radioGroup=(RadioGroup) findViewById(R.id.radiogroup);

manager=getSupportFragmentManager();

//获得Fragment实例

fragment03=(Fragment03) manager.findFragmentById(R.id.fragment01);

fragment02=(Fragment02) manager.findFragmentById(R.id.fragment02);

fragment01=(Fragment01) getSupportFragmentManager().findFragmentById(R.id.fragment03);

radioGroup.setOnCheckedChangeListener(new OnCheckedChangeListener() {

@Override

public void onCheckedChanged(RadioGroup group, int checkedId) {

// TODO Auto-generated method stub

switch (checkedId) {

case R.id.but01:

//显示Fragment01  隐藏Fragment02  03

getSupportFragmentManager().beginTransaction().show(fragment01).hide(fragment02).hide(fragment03).commit();

break;

case R.id.but02:

FragmentTransaction transaction2=manager.beginTransaction();

//显示Fragment02  隐藏Fragment01  03

transaction2.show(fragment02).hide(fragment03).hide(fragment01);

transaction2.commit();

break;

case R.id.but03:

FragmentTransaction transaction3=manager.beginTransaction();

//显示Fragment03  隐藏Fragment02  01

transaction3.show(fragment03).hide(fragment01).hide(fragment02);

transaction3.commit();

break;

default:

break;

}

}

});

}

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

第二种:

首先要继承FragmentActivity

private Fragment01 fragment01;

private Fragment02 fragment02;

private FragmentManager manager;

private boolean a=false;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

//得到FragmentManager管理者

manager=getSupportFragmentManager();

fragment01=new Fragment01();

fragment02=new Fragment02();

}

public void add1(View v) {

// TODO Auto-generated method stub

//开始事务

FragmentTransaction transaction=manager.beginTransaction();

transaction.add(R.id.fragmnnt, fragment01);

//当Fragemnt已经创建了 再去删除

if(a=true){

transaction.remove(fragment02);

}

transaction.commit();

}

public void add2(View v) {

// TODO Auto-generated method stub

//开始事务

FragmentTransaction transaction=manager.beginTransaction();

transaction.add(R.id.fragmnnt, fragment02);

transaction.remove(fragment01);

//改变fragment02的状态  如果创建了  就设置为true

a=true;

transaction.commit();

}

public void replace1(View v){

//开始事务

FragmentTransaction transaction=manager.beginTransaction();

transaction.replace(R.id.fragmnnt, fragment01);

transaction.commit();

}

public void replace2(View v){

//开始事务

FragmentTransaction transaction=manager.beginTransaction();

transaction.replace(R.id.fragmnnt, fragment02);

transaction.commit();

}

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

第三种:

首先要继承FragmentActivity

private Fragment01 fragment01;

private Fragment02 fragment02;

private Fragment03 fragment03;

private FragmentManager manager;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

manager=getSupportFragmentManager();

fragment01=new Fragment01();

fragment02=new Fragment02();

fragment03=new Fragment03();

}

//加载Fragment01

public void but01(View v){

getfrgment(fragment01, "f1");

}

//加载Fragment02

public void but02(View v){

getfrgment(fragment02, "f2");

}

//加载Fragment03

public void but03(View v){

getfrgment(fragment03, "f3");

}

//弹栈

public void but04(View v){

manager.popBackStack();

}

//加载Fragment将fragment添加到回退栈当中

public void getfrgment(Fragment fragment,String string) {

FragmentTransaction transaction=manager.beginTransaction();

transaction.replace(R.id.fragment, fragment);

//将当前的fragment添加到会退站

transaction.addToBackStack(string);

transaction.commit();

}

这三种方法本人觉得第三种好用一点,但各有优缺点吧,至于XML文件和其他类,想必小崔也不用意义列出了吧



并且还有一点要补充,如果要往Fragment里添加数据可以这样添加

private Button button,but1;

@Override

public View onCreateView(LayoutInflater inflater, ViewGroup container,

Bundle savedInstanceState) {

// TODO Auto-generated method stub

View view=inflater.inflate(R.layout.fragment01, container, false);

button=(Button) view.findViewById(R.id.button);

but1=(Button) view.findViewById(R.id.but1);

//点击button切换Fragment02  进行传值

button.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

// TODO Auto-generated method stub

FragmentTransaction transaction=getActivity().getSupportFragmentManager().beginTransaction();

//获取Fragemnt02的实例

Fragmetn02 fragmetn02=new Fragmetn02();

//调取Fragment02  gettext()方法进行传值

fragmetn02.gettext("崔红佳,你傻,你傻");

transaction.replace(R.id.relativ, fragmetn02);

transaction.commit();

}

});

//点击跳转Activity

but1.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

// TODO Auto-generated method stub

Intent it=new Intent(getActivity(),MyActivity.class);

startActivity(it);

}

});

return view;

}





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值