安卓Fragment跳转
2017.4.15
* **思路分析**
1.先在activity上创建一个上下为LinearLayout布局,中间为一个按钮的xml。并且创建2个Fragment
2.先创建一个静态Fragment :“This is first fragment”。
3.通过点击按钮来实现Fragment的动态创建。
4.通过点击返回键来实现Fragment的动态创建。
xml布局
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="vertical"
android:id="@+id/show">
</LinearLayout>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/btnshow"
android:layout_gravity="center"
android:layout_marginTop="20dp"
android:id="@+id/btnshow"
android:onClick="onClick"/>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="100dp"
android:orientation="vertical"
android:id="@+id/txtshow2">
</LinearLayout>
java编码
Fragment编码
View view = inflater.inflate(R.layout.fragment_biaoti, container, false);
// 加载一些初始化的数据
TextView txtContent = (TextView) view.findViewById(R.id.biaoti_show);
txtContent.setText(content);
return view;
public void setContent(String content) {
this.content = content;
}
Fragment静态创建
FragmentManager manager = getFragmentManager();
transaction = manager.beginTransaction(); //添加一个FragmentTransaction的实例
biaotiFragment.setContent("This is first fragment");
transaction.add(R.id.show, biaotiFragment); //静态创建, 用add()方法加上Fragment的对象
transaction.commit(); //调用commit()方法使得FragmentTransaction实例的改变生效
Fragment动态创建编码
btshow.setOnClickListener(new View.OnClickListener() { //监听button事件
@Override
public void onClick(View view) {
if (btshow.isClickable()) { //button第一次被点击事件
FragmentManager manager = getFragmentManager();
transaction = manager.beginTransaction();
biaotiFragment = new BiaotiFragment();
biaotiFragment.setContent("This is second fragment"); //调用fragment中的setContent()方法将Fragment中的标题改为This is second fragment
transaction.replace(R.id.show, biaotiFragment);//将show线性布局替换成biaotiFragment
transaction.commit();
}
btshow.setOnClickListener(new View.OnClickListener() { //再次监听button事件
@Override
public void onClick(View view) {
if (btshow.isClickable()) { //button第二次被点击事件
FragmentManager manager = getFragmentManager();
transaction = manager.beginTransaction();
contentFragment.setContent("This is in second fraqment");
transaction.replace(R.id.txtshow2, contentFragment);
transaction.commit();
}
}
});
}
});
}
private long exitTime = 0;
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN) { //判断手机上退出键
if ((System.currentTimeMillis() - exitTime) > 2000) { //第一次点击返回键
FragmentManager manager = getFragmentManager();
transaction = manager.beginTransaction();
biaotiFragment = new BiaotiFragment();
biaotiFragment.setContent("This is first fragment"); //调用biaotifragment中的setContent()方法
transaction.replace(R.id.show, biaotiFragment);
contentFragment=new ContentFragment();
contentFragment.setContent(""); //将contentFragment中的标题改为空
transaction.replace(R.id.txtshow2, contentFragment);
transaction.commit();
exitTime = System.currentTimeMillis();
} else { //第二次点击返回键
finish(); //退出
System.exit(0);
}
return true;
}
return super.onKeyDown(keyCode, event);
}
成果展示
首页
####button第一次点击
button第二次点击
返回键点击
浙公网安备 33010602011771号