安卓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第二次点击

返回键点击

posted on 2017-04-15 18:24  丁金涛  阅读(307)  评论(0)    收藏  举报

导航