Android攻城狮fragment
1 //1,fragment静态加载:MainActivity MainActivty1_2 Myfragment1 2 //2,fragment动态加载 :MainActivity Myfragment2 3 //3,fragment生命周期: Myfragment4_life 4 //4,fragment和:Activity之间通信:::MainActivity4 Myfragment5 5 public class MainActivity extends Activity implements OnCheckedChangeListener { 6 private RadioGroup group; 7 8 @Override 9 protected void onCreate(Bundle savedInstanceState) { 10 super.onCreate(savedInstanceState); 11 setContentView(R.layout.main); 12 group = (RadioGroup) findViewById(R.id.radioGroup1); 13 group.setOnCheckedChangeListener(this); 14 15 } 16 17 @Override 18 public void onCheckedChanged(RadioGroup group, int checkedId) { 19 // TODO Auto-generated method stub 20 switch (checkedId) { 21 case R.id.radio0: { 22 //静态加载fragment: 23 //第一个Activity跳转Activity1_2(xml布局中是含有android:name="com.example.fragment.Myfragment1"的fragment标签) 24 //Myfragment1类继承fragment 25 //Myfragment1类中的xml布局含有TextView和Button 26 Intent intent = new Intent(MainActivity.this, MainActivty1_2.class); 27 startActivity(intent); 28 break; 29 } 30 //动态加载fragment: 31 case R.id.radio1: { 32 //创建Myfragment2类继承fragment 33 //Myfragment2类中的xml布局含有TextView和Button 34 //把fragment2添加到main中的xml中的 LinearLayout布局(id=R.id.frame) 35 Myfragment2 fragment2 = new Myfragment2(); 36 FragmentManager fragmentManager = getFragmentManager(); 37 FragmentTransaction beginTransaction = fragmentManager.beginTransaction(); 38 beginTransaction.add(R.id.frame, fragment2);//把fragment2添加到拿个布局 39 beginTransaction.addToBackStack(null);//设置物理连接返回键 40 beginTransaction.commit(); 41 42 break; 43 } 44 case R.id.radio2: { 45 46 break; 47 } 48 49 case R.id.radio3: { 50 Intent intent = new Intent(MainActivity.this, MainActivity4.class); 51 startActivity(intent); 52 53 break; 54 } 55 56 } 57 } 58 59 }
1 public class MainActivty1_2 extends Activity { 2 3 private TextView textView; 4 5 @Override 6 protected void onCreate(Bundle savedInstanceState) { 7 // TODO Auto-generated method stub 8 super.onCreate(savedInstanceState); 9 setContentView(R.layout.main2); 10 Button button = (Button) findViewById(R.id.but); 11 button.setText("改变"); 12 textView = (TextView) findViewById(R.id.text); 13 button.setOnClickListener(new OnClickListener() { 14 15 @Override 16 public void onClick(View v) { 17 // TODO Auto-generated method stub 18 textView.setText("textView改变了"); 19 } 20 }); 21 } 22 }
public class Fragment1 extends android.support.v4.app.Fragment {@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {// TODO Auto-generated method stubreturn inflater.inflate(R.layout.view1, container, false);} }
1 public class Myfragment2 extends Fragment{ 2 3 4 @Override 5 public View onCreateView(LayoutInflater inflater, ViewGroup container, 6 Bundle savedInstanceState) { 7 // TODO Auto-generated method stub 8 //resource:需要加载的布局文件 9 //root:layout的viewGrup 10 // attachToRoot:false 不返回父viewGrup 11 View view = inflater.inflate(R.layout.fragment, container, false); 12 TextView textView=(TextView) view.findViewById(R.id.text); 13 textView.setText("动态加载fragment"); 14 return view; 15 } 16 17 }
、、//--------------------生命周期--------------------
1 public class Myfragment4_life extends Fragment { 2 3 // 1.当Fragment被添加到Activity时候会回调这个方法,并且只调用一次 4 @Override 5 public void onAttach(Activity activity) { 6 // TODO Auto-generated method stub 7 super.onAttach(activity); 8 } 9 10 // 2.创建fragment时会回调,只调用一次 11 @Override 12 public void onCreate(Bundle savedInstanceState) { 13 // TODO Auto-generated method stub 14 super.onCreate(savedInstanceState); 15 } 16 17 // 3.每次创建都会绘制Fragment的view组件时回调该方法 18 @Override 19 public View onCreateView(LayoutInflater inflater, ViewGroup container, 20 Bundle savedInstanceState) { 21 // TODO Auto-generated method stub 22 View view = inflater.inflate(R.layout.fragment, container, false); 23 TextView textView = (TextView) view.findViewById(R.id.text); 24 25 return view; 26 } 27 28 // 4.当fragment所在的Activity启动完成后调用 29 @Override 30 public void onActivityCreated(Bundle savedInstanceState) { 31 // TODO Auto-generated method stub 32 super.onActivityCreated(savedInstanceState); 33 } 34 35 // 5.进入启动fragment 36 @Override 37 public void onStart() { 38 // TODO Auto-generated method stub 39 super.onStart(); 40 } 41 42 // 6.恢复fragment时会被调用,调用onStart()方法后面一定会调用onResume() 43 @Override 44 public void onResume() { 45 // TODO Auto-generated method stub 46 super.onResume(); 47 } 48 49 // 7.暂停fragment时会被调用 50 @Override 51 public void onPause() { 52 // TODO Auto-generated method stub 53 super.onPause(); 54 } 55 56 // 8.停止fragment时会被调用 57 @Override 58 public void onStop() { 59 // TODO Auto-generated method stub 60 super.onStop(); 61 } 62 63 // 9.销毁fragment所包含的view组件时 64 @Override 65 public void onDestroyView() { 66 // TODO Auto-generated method stub 67 super.onDestroyView(); 68 } 69 70 // 10.销毁fragment时会被调用 71 @Override 72 public void onDestroy() { 73 // TODO Auto-generated method stub 74 super.onDestroy(); 75 } 76 77 // 11.fragment从activity中删除时会回调该方法。只调用一次 78 @Override 79 public void onDetach() { 80 // TODO Auto-generated method stub 81 super.onDetach(); 82 } 83 }
//---------------------fragment与activity通信----------------------------
// Fragment与Activity通信 // (1)Fragment可以调用getActivity()方法获取它所在的Activity; // (2)Activity可以调用FragmentManager的findFragmentById() // 或者findFragmentByTag()方法获取Fragment。// Activity --> Fragment:在Activity中创建Bundle数据包, // 并调用Fragment的setArguments(Bundle bundle)方法, // 然后在Fragment中使用getArguments()获取Bundle数据包。// Fragment --> Activity:需要在Fragment中定义一个内部回调接口, // 再让包含该Fragment的Activity实现该回调接口。 // 这样Fragment可调用该回调方法将数据传递给Activity。 public class MainActivity4 extends Activity implements MyListener {private Button button;private EditText editText;@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);setContentView(R.layout.main4);button = (Button) findViewById(R.id.send);editText = (EditText) findViewById(R.id.editText);button.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubString text = editText.getText().toString().trim();Myfragment5 fMyfragment5 = new Myfragment5(); // Activity --> Fragment:在Activity中创建Bundle数据包, // 并调用Fragment的setArguments(Bundle bundle)方法, // 然后在Fragment中使用getArguments()获取Bundle数据包。Bundle bundle = new Bundle();bundle.putString("name", text);fMyfragment5.setArguments(bundle);FragmentManager fragmentManager = getFragmentManager();FragmentTransaction beginTransaction = fragmentManager.beginTransaction();beginTransaction.add(R.id.layout, fMyfragment5, "fragment5");beginTransaction.commit();Toast.makeText(MainActivity4.this, "向fragment发送数据"+text, 1).show();}});// 静态加载FragmentManager fragmentManager = getFragmentManager();Fragment findFragmentById = fragmentManager.findFragmentById(R.id.f);Myfragment1 frag = (Myfragment1) findFragmentById;frag.setAa("xxxxxxxxxxxx静态传值xxx");}@Overridepublic void thank(String code) {// TODO Auto-generated method stubToast.makeText(MainActivity4.this, "成功接收到。。"+code, 1).show();} }
1 public class Myfragment5 extends Fragment { 2 private String code = "thank you"; 3 public MyListener listener; 4 // Fragment --> Activity:需要在Fragment中定义一个内部回调接口, 5 // 再让包含该Fragment的Activity实现该回调接口。class MainActivity4 extends Activity implements MyListener 6 // 这样Fragment可调用该回调方法将数据传递给Activity。 7 public interface MyListener { 8 public void thank(String code); 9 10 } 11 12 // 1.当Fragment被添加到Activity时候会回调这个方法,并且只调用一次 13 @Override 14 public void onAttach(Activity activity) { 15 // TODO Auto-generated method stub 16 listener = (MyListener) activity; 17 super.onAttach(activity); 18 } 19 //-------------------------------接收activity传值-开始-------------------- 20 @Override 21 public View onCreateView(LayoutInflater inflater, ViewGroup container, 22 Bundle savedInstanceState) { 23 // TODO Auto-generated method stub 24 View view = inflater.inflate(R.layout.fragment, container, false); 25 TextView textView = (TextView) view.findViewById(R.id.text); 26 //获取Bundle()传过来的数据包 27 String text = getArguments().get("name") + ""; 28 textView.setText(text); 29 Toast.makeText(getActivity(), "已成功接收" + text, 1).show(); 30 31 //---------------------------------接收结束------------------- 32 33 Toast.makeText(getActivity(), "向ACtivity发送" + code, 1).show(); 34 35 listener.thank(code); 36 37 return view; 38 } 39 }
Fragment与Activity通信 (1)Fragment可以调用getActivity()方法获取它所在的Activity; (2)Activity可以调用FragmentManager的findFragmentById()或者findFragmentByTag()方法获取Fragment。 Activity --> Fragment:在Activity中创建Bundle数据包,并调用Fragment的setArguments(Bundle bundle)方法,然后在Fragment中使用getArguments()获取Bundle数据包。 Fragment --> Activity:需要在Fragment中定义一个内部回调接口,再让包含该Fragment的Activity实现该回调接口。这样Fragment可调用该回调方法将数据传递给Activity。
将数据(这里是字符串 code) 从Fragment 传给 Activity: 1.定义一个接口 MyListener,里面定义一个无方法体的方法thank( String str); 2.创建 MyListener对象 listener; 3.重写方法 onAttach(Activity activity);将activity强制转换为MyListener并赋值给 listener; 4.在方法 onCreateView中写上 listener.thank(code); 实际上就是把数据 code 传递给了 activity!
转载于:https://www.cnblogs.com/my334420/p/6719939.html
Android攻城狮fragment相关推荐
- 写给即将/正在找工作的Android攻城狮
写给即将/正在找工作的Android攻城狮 版权声明:转载必须注明本文转自严振杰的博客:http://blog.yanzhenjie.com 这段时间从北上广深杭不断传来一两个月找不到工作的消息,我一 ...
- Android攻城狮ListView
适配器: 数据适配器:把复杂的数据填充在指定的视图界面上ArrayAdapter 数组适配器 用于绑定格式单一的数据 数据源:可以是集合或数组 SimpleAdapter 简单适配器:用于绑定格式复杂 ...
- Android攻城狮Gallery和ImageSwitcher制作图片浏览器
使用Gallery 和 ImageSwitcher 制作图片浏览器 Gallery介绍 我们有时候在手机上或者PC上看到动态的图片,可以通过鼠标或者手指触摸来移动它,产生动态的图片滚动效果,还可以根据 ...
- Android攻城狮GestureDetector和GestureOverlayView
手势识别 可以通过以下两种方式实现: 1. 使用GestureDetector 2. 使用GestureOverlayView(属于线程的控件)手势交互过程(原理): 1. 触屏一刹那,触发 Moti ...
- Android攻城狮AsyncTask
构建AsyncTack子类的参数 AsyncTask<Params,Progress,Result>是一个抽象类,通常用于被继承,继承AsyncTask需要指定如下三个泛型参数: para ...
- Android攻城狮ScrollView
ScrollView 滚动视图 滚动视图是指当前拥有很多内容,屏幕显示不完整时,需要通过滚动来显示完整的视图. ----------------------------- ScrollBar分两种: ...
- Android攻城狮ViewFlipper
使用ViewFlipper实现屏幕切换动画效果. ViewFlipper和ViewPager一样,都是Android自带的一个多页面管理控件,不同的是ViewPager是手动切换页面,而ViewFli ...
- Android攻城狮数据存储之SharedPreferences
Android的四种数据存储方式: 1. SharedPreferences 2. SQLite 3. Content Provider 4. File --------------------- S ...
- Android攻城狮认识ContextMenu
什么是ContextMenu? 例如Windows系统的右键菜单,在Android中长按某个文件夹,会跳出菜单,这个菜单就是ContextMenu. ContextMenu与OptionMenu的区别 ...
最新文章
- 四位共阳极数码管显示函数_【项目8-任务10-小组13】利用四位数码管实现动态扫描显示...
- XCTF-MISC-新手区-掀桌子
- 创建vue项目(四)路由相关知识、路由守卫、插槽、打包小细节
- 推荐算法--利用用户行为数据(02)
- 利用工厂模式实现怪物系统
- [C++] Pure Virtual Function and Abstract Class
- 定制Bootstrap3
- Day3 01 枚举
- Visual Studio Code (vscode) 配置 C / C++ 环境
- 解决办法:undefined reference to symbol 'dlclose@@GLIBC_2.2.5'
- linux iptable 使用指南
- fighter_zzh_Steam控制器,即将推出Linux的Street Fighter V以及更多开放式游戏新闻
- 计算机键盘上除在哪里,backspace键在哪里
- QT5 QLineEdit QTextEdit右键菜单的汉化
- 关于正确处理0x80070426等错误的方法
- 西门子1200与FANUC机器人Profinet通讯
- VHDL数字频率计的设计
- 计算机网络工程师等级考试,计算机四级网络工程师等级考试真题_3.doc
- 爱克发胶片_Agfa(爱克发)胶片
- Katex的markdown常用语法中一些关于Latex数学符号或公式等的笔记