Fragment基本使用方法和与activity的通信

一:Fragment的基本使用方法
1.
Fragment用于activity中切换界面使用,只是切换Fragment中的内容,activity没有被切换。
2.
Fragment的生命周期方法与activity一致,fragment切换时旧fragment对象会销毁,新的fragment对象会被创建。
3.
在layout中定义fragment.xml文件,并在main.xml中定义一个Framelayout作为Fragment的容器。
4.
新建java类Fragment.java继承Fragment类,重写方法返回view对象作为Framelayout中的内容。
5.
main_activity.java中,响应点击事件,填充布局。
这里写图片描述
这里写图片描述
代码:

layout_main.xml:

 <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:orientation="vertical" >
        <Button 
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="fragment_01"
            android:onClick="click1"/>
        <Button 
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="fragment_02"
            android:onClick="click2"/>

        </LinearLayout>
    <FrameLayout 
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/f1"
        ></FrameLayout>

fragment.java:

public class Fragment_01 extends Fragment {

    //返回的view对象会作为fragment_01的内容显示在屏幕上
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        View v = inflater.inflate(R.layout.fragment_01, null);
        return v;
    }
}

mainactivity.java:

public void click1(View v){
       //把fragment_01显示至帧布局当中
       //创建fragment对象
       Fragment_01 fg1 = new Fragment_01();
       //获取fragment管理器
       FragmentManager fm = getFragmentManager();
       //打开事务
       FragmentTransaction ft = fm.beginTransaction();
       //把内容显示到帧布局
       ft.replace(R.id.f1, fg1);
       //提交
       ft.commit();
   }

二.Fragment与activity的通信
布局和上述的类似,只是多了几个EditText.
1.activity向fragment中传递数据
首先在fragment.java文件写出需要实现的方法:

public class Fragment_01 extends Fragment {

    private TextView tv;
    //返回的view对象会作为fragment_01的内容显示在屏幕上
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        View v = inflater.inflate(R.layout.fragment_01, null);
        tv = (TextView) v.findViewById(R.id.tv);
        return v;
    }
    public void setText(String text){
        tv.setText(text);
    }
}

其次在activity中调用上述fragment中的方法:

public void click4(View v){
       EditText et_main = (EditText) findViewById(R.id.et_main);
       String text = et_main.getText().toString();

       //传递数据,fg1为上述fragment.java的对象
       fg1.setText(text);
   }

2.fragment向activity中传递数据
在main_activity中定义方法:

public void setText(String text){
       EditText et_main = (EditText) findViewById(R.id.et_main);
       et_main.setText(text);
   }

在fragment.java中调用activity中的方法

public class Fragment_02 extends Fragment {

    //返回的view对象会作为fragment_02的内容显示在屏幕上
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        View v = inflater.inflate(R.layout.fragment_02, null);
        final EditText et = (EditText) v.findViewById(R.id.et_frag);

        Button bt = (Button) v.findViewById(R.id.B_frag);
        bt.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                String text = et.getText().toString();
//获取activity的对象             ((MainActivity)getActivity()).setText(text);
            }
        });
        return v;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值