android Fragment与Activity之间数据交互

来源:互联网 发布:sybase数据库访问 编辑:程序博客网 时间:2024/04/29 03:16

本文实现了两个功能:

1、在Fragment中通过getActivity获取activity中组件在通过组件获取内容的方法获取activity中的数据。2、在Activity中通过接口回调的方法获取Fragment中组件的值。

目录结构:
这里写图片描述

效果图:

这里写图片描述

MainActivity代码:

import android.app.Activity;import android.app.FragmentManager;import android.app.FragmentTransaction;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Toast;import com.example.class_fragment_activity_communicating_data.Fragment1.CallBack;public class MainActivity extends Activity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        FragmentManager manager = getFragmentManager();        FragmentTransaction transaction = manager.beginTransaction();        final Fragment1 fragment1 = new Fragment1();        transaction.add(R.id.right, fragment1, "fragment1");        transaction.commit();        findViewById(R.id.A_button1).setOnClickListener(new OnClickListener() {            @Override            public void onClick(View v) {                // TODO Auto-generated method stub                fragment1.getEditText(new CallBack() {                // 通过接口回调获取Fragment中的值                            @Override                            public void getData(String str) {                                // TODO Auto-generated method stub                                Toast.makeText(MainActivity.this, str, 1)                                        .show();                            }                        });            }        });    }}

Fragment中代码:

import android.app.Fragment;import android.os.Bundle;import android.view.LayoutInflater;import android.view.View;import android.view.View.OnClickListener;import android.view.ViewGroup;import android.widget.EditText;import android.widget.Toast;public class Fragment1 extends Fragment {    private EditText editText;    @Override    public void onCreate(Bundle savedInstanceState) {        // TODO Auto-generated method stub        super.onCreate(savedInstanceState);    }    @Override    public View onCreateView(LayoutInflater inflater, ViewGroup container,            Bundle savedInstanceState) {        // TODO Auto-generated method stub        View view = inflater.inflate(R.layout.fragment1_layout, null);        editText = (EditText) view.findViewById(R.id.editText1);        view.findViewById(R.id.button1).setOnClickListener(                new OnClickListener() {                    @Override                    public void onClick(View v) {                        // TODO Auto-generated method stub                        EditText editText = (EditText) getActivity()                                .findViewById(R.id.editText1);// 通过getAcitivity获取Activity中的组件再获取Activity中的值                        Toast.makeText(getActivity(),                                editText.getText().toString(), 1).show();                    }                });        return view;    }    // 接口回调    //创建一个方法,传递一个接口作为参数    public void getEditText(CallBack callBack) {        //调用该接口的方法并且将需要传递给Activity的值作为该方法的参数        callBack.getData(editText.getText().toString());    }    //创建一个接口定义一个方法getData将需要传递给Activity的值的类型作为参数类型    public interface CallBack {        public void getData(String str);    }    @Override    public void onPause() {        // TODO Auto-generated method stub        super.onPause();    }}

布局文件代码:

activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:orientation="horizontal" >    <LinearLayout        android:id="@+id/left"        android:layout_width="0dp"        android:layout_height="fill_parent"        android:layout_weight="1"        android:background="#cccccc"        android:gravity="center_vertical|center_horizontal"        android:orientation="vertical" >        <EditText            android:id="@+id/editText1"            android:layout_width="fill_parent"            android:layout_height="wrap_content"            android:hint="Activity文本输入框" >            <requestFocus />        </EditText>        <Button            android:id="@+id/A_button1"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:text="点击获取Fragment中文本输入框的值" />    </LinearLayout>    <LinearLayout        android:id="@+id/right"        android:layout_width="0dp"        android:layout_height="fill_parent"        android:layout_weight="2"        android:background="#ccddcc"        android:gravity="center_vertical|center_horizontal"        android:orientation="horizontal" >    </LinearLayout></LinearLayout>

fragment1_layout.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical" >    <Button            android:id="@+id/button1"            android:layout_width="fill_parent"            android:layout_height="wrap_content"            android:text="在Fragment中读取Activity组件中的值" />    <EditText        android:id="@+id/editText1"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:hint="Fragment 文本输入框">        <requestFocus />    </EditText></LinearLayout>

Fragment 与 Fragment之间数据的交互请访问:
http://blog.csdn.net/q296264785/article/details/53169440

0 0
原创粉丝点击