再谈Fragment(二)
来源:互联网 发布:360强制修复网络 编辑:程序博客网 时间:2024/06/05 18:27
Fragment的生命周期
关键方法
onAttach()
onCreateView()
启动Fragment-->屏幕锁屏-->屏幕解锁-->切换到其他的Fragment
-->回到桌面-->回到应用-->退出Fragment
启动Fragment
onAttach()-->onCreate()-->onCreateView()-->onActivityCreated()-->onStart()-->onResume()
屏幕锁屏
onPause()-->onStop()
屏幕解锁
onStart()-->onResume()
切换到其他Fragment
第一个:onPause()-->onStop()-->onDestroyView()-->onDestroy()-->onDetach()
第二个:onAttach()-->onCreate()-->onCreateView()-->onActivityCreated()-->onStart()-->onResume()
Fragment与Activity通信
Fragment可调用getActivity()方法获取它所在的Activity
Activity可调用FragmentManager的findFragmentById()或findFragmentByTag()方法获取Fragment
Activity-->Fragment:在Activity中创建Bundle数据包,并调用Fragment的setArguments(Bundle bundle)方法
Fragment-->Activity:需要在Fragment中定义一个内部回调接口,再让包含该Fragment的Acitivity实现该回调接口。这样Fragment可调用该回调方法将数据传递给Acitivity
main4.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/layout" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <EditText android:id="@+id/editText" android:layout_width="match_parent" android:layout_height="wrap_content" /> <Button android:id="@+id/send" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="发送" /></LinearLayout>
public class MyFragment5 extends Fragment {private String code = "Thank you, Activity!";public MyListener listener;public interface MyListener {public void thank(String code);}@Overridepublic void onAttach(Activity activity) {listener = (MyListener) activity;super.onAttach(activity);}@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {View view = inflater.inflate(R.layout.fragment2, container, false);TextView tv = (TextView) view.findViewById(R.id.text);String text = (String) getArguments().get("name");tv.setText(text);Toast.makeText(getActivity(), "已成功接收到" + text, Toast.LENGTH_SHORT).show();Toast.makeText(getActivity(), "向Activity发送" + code, Toast.LENGTH_SHORT).show();listener.thank(code);return view;}}
MainActivity4.java
public class MainActivity4 extends Activity implements MyListener {private EditText editText;private Button send;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main4);editText = (EditText) findViewById(R.id.editText);send = (Button) findViewById(R.id.send);send.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {String text = editText.getText().toString();MyFragment5 fragment5 = new MyFragment5();Bundle bundle = new Bundle();bundle.putString("name", text);fragment5.setArguments(bundle);FragmentManager fragmentManager = getFragmentManager();FragmentTransaction beginTransaction = fragmentManager.beginTransaction();beginTransaction.add(R.id.layout, fragment5, "fragment5");beginTransaction.commit();Toast.makeText(MainActivity4.this, "向Fragment发送数据" + text, Toast.LENGTH_SHORT).show();}});}@Overridepublic void thank(String code) {Toast.makeText(MainActivity4.this, "已成功接收到" + code + ", 客气了", Toast.LENGTH_SHORT).show();}}
- 再谈Fragment(二)
- Fragment(二)使用Fragment
- Fragment(二)通信
- fragment解析(二)
- ViewPager+Fragment(二)
- Fragment(二)
- Fragment初识(二)
- Fragment使用(二),FragmentTransaction管理Fragment
- Fragment学习(二): 管理Fragment和Fragment通讯
- Fragment开发实战(二)
- Fragment基本使用(二)
- android fragment解析(二)
- Fragment基本应用(二)
- Fragment 用法总结(二)
- Android之Fragment(二)
- Fragment---基础知识(二)回退栈
- Android面试(二)Fragment
- Fragment的创建(二)
- QCustomPlot实现矩形缩放图表
- 不使用广告而采集IDFA的app上架
- 顺序表的算法操作
- dom4j
- 【Zookeeper系列二】ZooKeeper典型应用场景实践
- 再谈Fragment(二)
- Andorid获取状态栏高度
- Ubuntu14.04主机重命名
- Spring Security(08)——intercept-url配置
- 使用Bootstrap组件【下篇】
- js 使用总结
- 相机跟随和鼠标滚轮控制缩放
- UIPickView
- Eclipse快速打开文件目录插件——Open Explorer