Fragmen
Fragment的生命周期
1.onAttach() :Fragment与Activity有联系。
2.onCreate():创建Fragment
3.onCreateView():创建Fragment视图,尽量不要做耗时操作
4.onActivityCreated():当Activity中的onCreate方法执行完后调用。
5.onStart():启动。
6.onResume():可见
7.onPause():不可见
8.onStop():停止。
9. onDestroyView() :销毁Fragment视图
10.onDestroy():销毁fragment对象
一、静态注册
// An highlighted block
<fragment
android:layout_weight="1"
android:layout_width="match_parent"
android:layout_height="0dp"
android:name="bw.com.fragmentday11.MyFragmentBottom"
></fragment>
二、动态注册
布局文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<FrameLayout
android:id="@+id/topone"
android:layout_weight="1"
android:layout_width="match_parent"
android:layout_height="0dp"></FrameLayout>
<FrameLayout
android:id="@+id/bottomtwo"
android:layout_weight="1"
android:layout_width="match_parent"
android:layout_height="0dp"></FrameLayout>
</LinearLayout>
java代码
package bw.com.fragmentday11;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
public class MainActivity extends AppCompatActivity {
MyFragmentBottom myFragmentBottom;
MyFragmentTop myFragmentTop;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
FragmentManager manager = getSupportFragmentManager();
FragmentTransaction transaction = manager.beginTransaction();
myFragmentBottom = new MyFragmentBottom();
myFragmentTop = new MyFragmentTop();
transaction.add(R.id.topone,myFragmentTop);
transaction.add(R.id.bottomtwo,myFragmentBottom);
transaction.commit();
}
}
三,传值 使用Argument 使用EventBus(注释为EventBus传值)
效果图
接受方
// An highlighted block
public class MyFragmentBottom extends Fragment {
TextView textView;
// @Override
// public void onAttach(Context context) {
// super.onAttach(context);
// EventBus.getDefault().register(this);
// }
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.layout_bottom,container,false);
textView = view.findViewById(R.id.textview);
Bundle bundle = getArguments();
String message = bundle.getString("messgae");
// @Subscribe(threadMode = ThreadMode.MAIN,sticky = true)
// public void readFragment(String message){
// textView.setText(message);
// }
textView.setText(message);
return view;
}
//
// @Override
// public void onDestroy() {
// super.onDestroy();
// if (EventBus.getDefault().isRegistered(this)){
// EventBus.getDefault().unregister(this);
// }
// }
}
发送方
// An highlighted block
public class MyFragmentTop extends Fragment {
ListView listView;
List<User> list = new ArrayList<>();
MyAdapter myAdapter;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.layout_top,container,false);
listView = view.findViewById(R.id.listview);
list.add(new User("侏儒","聪明、生机勃勃并且阴晴不定的侏儒在艾泽拉斯文明的种族中代表了一个独特的矛盾体。这个种族是杰出的发明家,并有一种无法抑制的乐观性格,但是它也遭受过背叛、迁徙甚至是接近种族灭绝。在面对这种灾难时他们具有一种非同寻常的乐观精神,象征着侏儒们真正不可动摇的精神作为一种身材较小的生物种族,侏儒通过他们集体的智慧和抱负在艾泽拉斯大陆上崭露头角,使比他们大的伙伴们黯然失色。侏儒是著名的机械工程师、技师,由于他们对世界上的科学知识的了解以及将上述的知识转化为令人惊讶的工具、车辆、盔甲和武器而广受尊敬。"));
list.add(new User("人类","是人属下的唯一现存物种。形态特征比直立人更为进步。分为早期智人和晚期智人。早期智人过去曾叫古人,生活在距今25万~4万年前,主要特征是脑容量大,在1300毫升以上;眉嵴发达,前额较倾斜,枕部突出,鼻部宽扁,颌部前突。一般认为是由直立人进化来的,但有争议 [1] 认为直立人被后来崛起的智人(现代人)走出非洲后灭绝或在此之前就灭绝了。晚期智人(新人)是解剖结构上的现代人。大约从距今四五万年前开始出现。两者形态上的主要差别在于前部牙齿和面部减小,眉嵴减弱,颅高增大,到现代人则更加明显。晚期智人臂不过膝,体毛退化,有语言和劳动,有社会性和阶级性。"));
list.add(new User("暗夜精灵","由卡多雷和暗夜精灵共同组成。恶魔猎手是被暗夜精灵族社会排斥的黑暗战士。他们在很久以前就和黑暗力量立下契约,要用自己可怕的力量于混乱的力量对抗到底,他们弄瞎了自己的双眼,从而获得了可以迅速发现恶魔的能力。他们手持魔力强大的武器,并以此猎杀恶魔。虽然恶魔猎手可以算得上是暗夜精灵族中最强大的战士,但他们无私的牺牲却不被自己的同胞理解。"));
list.add(new User("矮人","身材矮小,样貌粗犷,强壮勇猛,性格豪放不羁、踏实勤恳、忠诚固执、重情重义,以开采矿石、制作珠宝的高超技艺闻名于世,并通过这种技艺创造财富,为中土世界的繁荣做出了极大的贡献,矮人是北欧神话中的种族,由泰坦创造的生物。矮人因为其在神话传说中的特殊地位,而被许多游戏采用。矮人在奇幻文学题材中指的是最早出现在欧洲民间传奇的幻想矮小种族,自托尔金跟龙与地下城的创作延伸后,成为许多奇幻类型创作的题材人物。"));
list.add(new User("德莱尼","魔兽世界联盟种族之一.燃烧军团对德莱尼人的追杀持续了数千年。德莱尼人拜访了许多世界,并探索了大部分的已知宇宙,为的是找到一处安全的港湾,但燃烧军团也从未放弃过追杀德莱尼人的行动。与此同时,神秘的纳鲁种族赐予德莱尼人以圣光的知识和力量。纳鲁向德莱尼解释道,宇宙中还存在着其他敢与燃烧军团抗争的势力,终有一天,纳鲁会将他们联合起来,成为一支无坚不摧的光明大军。德莱尼人深受感动,并宣誓将信仰圣光,为纳鲁的无私理想而战。"));
myAdapter = new MyAdapter(getActivity(),list);
listView.setAdapter(myAdapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
// EventBus.getDefault().post(list.get(position).getChoose());
Bundle bundle = new Bundle();
bundle.putString("messgae",list.get(position).getChoose());
MyFragmentBottom myFragmentBottom = new MyFragmentBottom();
myFragmentBottom.setArguments(bundle);
getFragmentManager().beginTransaction().add(R.id.bottomtwo,myFragmentBottom)
.replace(R.id.bottomtwo,myFragmentBottom).commit();
}
});
return view;
}
}