Fragment

Fragment是一种可以嵌入在Activity中的UI片段,它能让程序更加合理和充分地利用大屏幕的空间。


public class MainActivity extends AppCompatActivity implements View.OnClickListener{

@Override
protected void onCreate (Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//获取按钮
Button button = ( Button ) findViewById(R.id.button);
//为按钮注册点击事件
button.setOnClickListener(this);
//replaceFragment()方法动态添加Right_Fragment这个碎片
replaceFragment(new Right_Fragment( ) );
}

@Override
public void onClick (View v){
switch(v.getId()){
case R.id.button://当按钮被点击
//Right_Fragment被替换成AnotherRightFragment

replaceFragment (new AnotherRightFragment( ) );
break;
default
:
break;
}
}
private void replaceFragment( Fragment fragment ) {
//通过getSupportFragmentManager()方法获取fragmentManager实例
FragmentManager fragmentManager = getSupportFragmentManager();
//beginTransaction()方法开启事务
FragmentTransaction transaction = fragmentManager.beginTransaction();
//使用replace()添加或替换fragment
transaction.replace(R.id.right_layout,fragment);
//在碎片中模拟返回栈
transaction.addToBackStack(null);
//提交事物
transaction.commit();
}
}

Fragment和Activity之间的通信
在Activity中获取相应的Fragment实例
FragmentTest fragment = (FragmentTest)getSupportFragmentManager().findFragmentById( R.id.fragment_test );

在Fragment中获取Activity的实例
MainActivity activity = (MainActivity)getActivity ( ) ;

Fragment特有的回调方法

onAttch() 当Fragment和Activity建立关联的时候调用
onCreateView() 为Fragment创建View(加载布局)时调用
onActivityCreate() 确保与Fragment相关联的Activity一定已经创建完毕的时候调用
onDestroyView() 当与Fragment相关联的View被移除时调用
onDetach()当Fragment与Activity解除关联时调用

Fragment的生命周期

当Fragment1第一次被加载到屏幕上时,会依次执行onAttach(),onCreate(),onCreateView(),onActivityCreated(),onStart()和onResume()方法。

当Fragment1被其他Fragment2替换掉时,Fragment1进入停止状态,因此onPause(),onStop()和onDestroyView()方法会得到执行,如果在替换是没有调用addToBackStack()方法,Fragment1就会进入销毁状态,onDestroy()和onDetach()方法会执行。

按下Back健,Fragment1重新回到运行状态,onCreateView(),onAcitivityCreated(),onStart()和onResume()方法会得到执行。使用了addToBackStack()方法不会执行onCreate(),它并没有被销毁。

再次按下Back键,依次会执行onPause(),onStop(),onDestroyView(),onDestroy()和onDetach()方法,将碎片销毁掉。

Fragment也可以通过onSaveInstanceState()方法来保存数据,在onCreate(),onCreateView()和onActivityCreate()这3个方法中都可以重新得到。

转载于:https://my.oschina.net/u/3908812/blog/1859468

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值