//MainActivity
package com.bawei.com.haha; import android.app.FragmentManager; import android.os.Bundle; import android.support.v4.app.FragmentTransaction; import android.support.v7.app.AppCompatActivity; import android.widget.EditText; import android.widget.FrameLayout; import android.widget.TextView; public class MainActivity extends AppCompatActivity { TextView text; private FrameLayout fragment_container; private EditText ed; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //取id text = (TextView) findViewById(R.id.text); // 步骤1:获取FragmentManager FragmentManager fragmentManager = getFragmentManager(); // 步骤2:获取FragmentTransaction final FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction(); // 步骤3:创建需要添加的Fragment final mFragment mfragment = new mFragment(); // 步骤4:创建Bundle对象 // 作用:存储数据,并传递到Fragment中 final Bundle bundle = new Bundle(); // 步骤5:往bundle中添加数据 bundle.putString("message", "dsadasdas"); // 步骤6:把数据设置到Fragment中 mfragment.setArguments(bundle); // 步骤7:动态添加fragment // 即将创建的fragment添加到Activity布局文件中定义的占位符中(FrameLayout) fragmentTransaction.add(R.id.fragment_container, mfragment); fragmentTransaction.commit(); //接口传值 mfragment.sendMessage(new mFragment.ICallBack() { @Override public void huida(String daan) { //在点击framgae给Activity传值 text.setText(daan); } }); } }
//Fragment
package com.bawei.com.haha; import android.os.Bundle; import android.support.v4.app.Fragment; import android.text.TextUtils; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; /** * Created by lenovo on 2018/4/9. */ public class mFragment extends Fragment { Button button; TextView text; Bundle bundle; String message; ICallBack huida; int i = 0; private EditText ed; private String edString; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View contentView = inflater.inflate(R.layout.fragment, container, false); // 设置布局文件 button = (Button) contentView.findViewById(R.id.button); text = (TextView) contentView.findViewById(R.id.text); // 步骤1:通过getArgments()获取从Activity传过来的全部值 bundle = this.getArguments(); // 步骤2:获取某一值 message = bundle.getString("message"); //加载控件 initView(contentView); // 步骤3:设置按钮,将设置的值显示出来 button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (i == 0) { // 显示传递过来的值 text.setText(message); i++; } else { submit(); //给接空赋值 huida.huida(edString); i = 0; } } }); return contentView; } private void initView(View contentView) { ed = (EditText) contentView.findViewById(R.id.ed); } private void submit() { // validate edString = ed.getText().toString().trim(); if (TextUtils.isEmpty(edString)) { Toast.makeText(getContext(), "edString不能为空", Toast.LENGTH_SHORT).show(); return; } // TODO validate success, do something } //定义接口给Acyiivty传值 public interface ICallBack { void huida(String daan); } // 设置 接口回调 方法 //提供外部使用的方法 public void sendMessage(ICallBack huida) { this.huida = huida; } }
//main布局
<?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="com.bawei.com.haha.MainActivity"> <TextView android:id="@+id/text" android:layout_gravity="center" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="20dp" android:text="我是Activity" /> <FrameLayout android:layout_below="@+id/button" android:id="@+id/fragment_container" android:layout_width="match_parent" android:layout_height="500dp"/> </LinearLayout>
//子布局
<?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:background="#ff0" android:orientation="vertical"> <EditText android:id="@+id/ed" android:layout_width="match_parent" android:layout_height="wrap_content" /> <TextView android:id="@+id/fragment" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:text="我是fragment" android:textSize="30dp" /> <TextView android:id="@+id/text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:text="等待Activity发送消息" android:textSize="20dp" /> <Button android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:layout_gravity="center" android:text="点击接收Activity消息" android:textSize="20dp" /> </LinearLayout>