一、生命周期方法:

onAttach():当Fragment被添加到Activity里面就会执行这个方法 (只执行一次)

onCreate():当创建Fragment就会回调 (只调用一次)

onCreateView():每次创建都会绘制Fragment的View组件时,调用

onActivityCreate():当Fragment所在的Activity启动完成后,调用

onStart():启动Fragment,调用

onResume():恢复Fragment时会被回调,调用onStart()后面一定会调用这个方法

onPause():暂停Fragment

onStop():停止Fragment

onDestroyView():销毁Fragment里面的View组件时,调用

onDestroy():销毁Fragment时,调用

onDetach():Fragment从Activity中被删除了,调用(只调用一次)

(1)启动Fragment

onAttach()--->onCreate()--->onCreateView--->onActivityCreate()--->onStart()--->onResume()

(2)屏幕锁屏

onPause()--->onStop()

(3)屏幕解锁

onStart()--->onResume()

(4)切换到其他Fragment

第一个切换的Fragment:

onPause()--->onStop()--->onDestroyView()--->onDestroy--->onDetach()

第二个被切换过来的Fragment:

onAttach()--->onCreate()--->onCreateView--->onActivityCreate()--->onStart()--->onResume()



二、在Activity之间传值:

Activity---》Fragment 传值:

动态传值:

定义一个EditText 通过button 把在Activity上面输入的值传入到Fragment中来。

通过 setArguments(Bundle)方法来实现

send= (Button) findViewById(R.id.btnSi);
editText= (EditText) findViewById(R.id.edit);
send.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
MyFragment4 myFragment4=new MyFragment4();
Bundle bundle=new Bundle();
String aaa=editText.getText().toString();
bundle.putString("name",aaa);
myFragment4.setArguments(bundle);
FragmentTransaction add = getFragmentManager().beginTransaction().add(R.id.aa, myFragment4,"Nihao ");
add.commit();
// Toast.makeText(Main4.this,"已发送数据",Toast.LENGTH_SHORT).show();
}
});
Fragment进行接收 并修改TextView的值

getArguments().get(键值)来获取放在Bundle里面的值

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view=inflater.inflate(R.layout.fragment4, container, false);
textView= (TextView) view.findViewById(R.id.textview4);
String a=getArguments().get("name").toString();
textView.setText(a);


静态传值:

<fragment
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/fragmetn"
android:name="com.aa.zhao.fragmentdemo.MyFragment"/>
public String getAaa() {
return aaa;
}
public void setAaa(String aaa) {
this.aaa = aaa;
}
private String aaa;
设置一个字符串类型数据 并初始化 get set方法

在Activity里面 通过findFragmentById的方式来 绑定fragment

并且通过setAaa()方法进行传值

Fragment fragmentById = getFragmentManager().findFragmentById(R.id.fragmetn);
MyFragment fragment= (MyFragment) fragmentById;
fragment.setAaa("aaa静态传值");
在Fragment里面进行 getAaa()方法接收数据

btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String a=getAaa();
System.out.println(a+"静态传值收到了");
}
});
这样就实现了静态传值效果。


Fragment---》Activity传值:

在Fragment里面 通过自定义一个接口 并写上一个方法 进行传值, 并且在onAttach方法里面 获取当前Activity。

public interface MyListener
{
void Thank(String code);
}

@Override
public void onAttach(Activity activity) {
listener= (MyListener) activity;
super.onAttach(activity);
}

获取当前Activity后 new一个 接口实例,并且调用方法 进行传值

listener.Thank("哎呦不错啊啊");

在Activity中 实现这个接口 并且复写里面的方法 接收传过来的数据

@Override
public void Thank(String code) {

System.out.println("收到您的回信"+code);
}


更多相关文章

  1. 有关WebView的一些使用方法
  2. Android 修改spinner 字体颜色 样式的方法
  3. Android 软键盘弹出时把原来布局顶上去的解决方法
  4. Android多窗口分屏(原生方法)
  5. getCacheDir()和getFilesDir()方法区别
  6. Object 开发中常用的重写方法总结toString,equals,hashCode,compare
  7. java 构造器内部的多态方法和行为
  8. Javassist生成class(生成类,方法,字段,注解)
  9. Eclipse创建的包变成文件夹的解决方法

随机推荐

  1. [转]使HOME键有效
  2. android 电容屏(二):驱动调试之基本概念篇
  3. Android—Android中监听EditText文本输入
  4. Android(安卓)获取屏幕高度、标题高度、
  5. DataBing
  6. Android问题集(七)——TableLayout 中让Tab
  7. Android实现朋友圈多图显示功能
  8. AndroidManifest.xml - 【 manifest -> a
  9. 补间动画--缩放动画XML
  10. Android系统框架概述