• 两个fragment传值

    方式一

    • 布局文件代码:

      <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:tools="http://schemas.android.com/tools"
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      android:orientation="horizontal"
      tools:context=".MainActivity" > <!-- 静态 必须要写ID--> <fragment
      android:id="@+id/fragment1"
      android:name="com.qf.day14_fragment_4.fragment.MyFragment1"
      android:layout_width="0dp"
      android:layout_height="match_parent"
      android:layout_weight="1" /> <View
      android:layout_width="1dp"
      android:layout_height="match_parent"
      android:background="#0f0" />
      <!-- 动态 --> <LinearLayout
      android:id="@+id/ll_fragment_id"
      android:layout_width="0dp"
      android:layout_height="match_parent"
      android:layout_weight="1"
      android:orientation="horizontal" /> </LinearLayout>
    • 布局文件逻辑代码:

      package com.qf.day14_fragment_4;
      
      import com.qf.day14_fragment_4.fragment.MyFragment2;
      
      import android.os.Bundle;
      import android.app.Activity;
      import android.app.FragmentManager;
      import android.app.FragmentTransaction;
      import android.view.Menu; 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(); MyFragment2 myFragment2 = new MyFragment2(); transaction.replace(R.id.ll_fragment_id,myFragment2); transaction.commit();
      } @Override
      public boolean onCreateOptionsMenu(Menu menu) {
      getMenuInflater().inflate(R.menu.main, menu);
      return true;
      } }
    • 其中一个fragment逻辑代码:

      package com.qf.day14_fragment_4.fragment;
      
      import android.app.Fragment;
      import android.app.FragmentManager;
      import android.app.FragmentTransaction;
      import android.os.Bundle;
      import android.view.LayoutInflater;
      import android.view.View;
      import android.view.View.OnClickListener;
      import android.view.ViewGroup;
      import android.widget.Button; import com.qf.day14_fragment_4.R; public class MyFragment1 extends Fragment{ private Button btn; @Override
      public View onCreateView(LayoutInflater inflater, ViewGroup container,
      Bundle savedInstanceState) {
      // TODO Auto-generated method stub
      View v = inflater.inflate(R.layout.fragment1_layout, container, false); btn = (Button) v.findViewById(R.id.btn);
      //点击按钮传值
      btn.setOnClickListener(new OnClickListener() { @Override
      public void onClick(View v) {
      // TODO Auto-generated method stub //管理者对象
      FragmentManager manager = getFragmentManager();
      FragmentTransaction transaction = manager.beginTransaction(); MyFragment2 myFragment2 = new MyFragment2(); Bundle bundle = new Bundle(); bundle.putString("msg", "左边Fragment向右边Fragment传值"); myFragment2.setArguments(bundle); transaction.replace(R.id.ll_fragment_id, myFragment2); transaction.commit();
      }
      });
      return v;
      }
      }

    方式二 前提:必须两个静态fragment

    • 界面xml代码:

      <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:tools="http://schemas.android.com/tools"
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      android:orientation="horizontal"
      tools:context=".MainActivity" > <fragment
      android:id="@+id/leftfragment"
      android:name="com.qf.day14_fragment_demo5.fragment.Fragment1"
      android:layout_width="0dp"
      android:layout_height="match_parent"
      android:layout_weight="1" /> <View
      android:layout_width="1dp"
      android:layout_height="match_parent"
      android:background="#00f" /> <fragment
      android:id="@+id/rightfragment"
      android:name="com.qf.day14_fragment_demo5.fragment.Fragment2"
      android:layout_width="0dp"
      android:layout_height="match_parent"
      android:layout_weight="1" /> </LinearLayout>
    • 其中核心fragment代码

      package com.qf.day14_fragment_demo5.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.Button;
      import android.widget.EditText;
      import android.widget.TextView; import com.qf.day14_fragment_demo5.R; public class Fragment1 extends Fragment{ private EditText etContent;
      private Button btnSend; @Override
      public View onCreateView(LayoutInflater inflater, ViewGroup container,
      Bundle savedInstanceState) {
      // TODO Auto-generated method stub View view = inflater.inflate(R.layout.layout01, container, false);
      etContent = (EditText) view.findViewById(R.id.et_content);
      btnSend = (Button) view.findViewById(R.id.btn_send); btnSend.setOnClickListener(new OnClickListener() { @Override
      public void onClick(View v) {
      // TODO Auto-generated method stub String msg = etContent.getText().toString().trim(); //通过Fragment的id 获取Fragment2的对象
      // Fragment2 fragment2 = (Fragment2) getFragmentManager().findFragmentById(R.id.rightfragment);
      // fragment2.setTextValues(msg); //TextView tv = (TextView) getFragmentManager().findFragmentById(R.id.rightfragment).getView().findViewById(R.id.tv_show);
      TextView tv = (TextView) getActivity().findViewById(R.id.tv_show);
      tv.setText(msg); } }); return view;
      } }
  • fragment给界面传值(Activity) 接口回调

    • 界面代码

      package com.qf.day14_fragment_demo3;
      
      import com.qf.day14_fragment_demo3.callback1.CallBackValue;
      
      import android.os.Bundle;
      import android.annotation.SuppressLint;
      import android.app.Activity;
      import android.app.FragmentManager;
      import android.app.FragmentTransaction;
      import android.view.Menu;
      import android.widget.TextView; public class MainActivity extends Activity implements CallBackValue{ private TextView tv; @SuppressLint("NewApi")
      @Override
      protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main); tv = (TextView) findViewById(R.id.tv); FragmentManager manager = getFragmentManager();
      FragmentTransaction transaction = manager.beginTransaction();
      transaction.replace(R.id.ll_fragment_id, new MyFragment());
      transaction.commit();
      } //回调接口的方法
      @Override
      public void sendMessage(String msg) {
      // TODO Auto-generated method stub
      tv.setText(msg);
      } }
    • 接口代码

      package com.qf.day14_fragment_demo3.callback1;
      
      public interface CallBackValue {
      
          public void sendMessage(String msg);
      
      }
    • fragment代码

      package com.qf.day14_fragment_demo3;
      
      import com.qf.day14_fragment_demo3.callback1.CallBackValue;
      
      import android.annotation.SuppressLint;
      import android.app.Activity;
      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.Button;
      import android.widget.EditText; @SuppressLint("NewApi")
      public class MyFragment extends Fragment{ CallBackValue callBackValue; private EditText et;
      private Button btnFTA; /**
      * 与Activity第一次链接是调用
      */
      @Override
      public void onAttach(Activity activity) {
      // TODO Auto-generated method stub
      super.onAttach(activity); //Fragment归属的Activity是getActivity
      callBackValue = (CallBackValue) getActivity();
      } @Override
      public View onCreateView(LayoutInflater inflater, ViewGroup container,
      Bundle savedInstanceState) {
      // TODO Auto-generated method stub
      View v = inflater.inflate(R.layout.fragment_layout, container,false);
      et = (EditText) v.findViewById(R.id.et);
      btnFTA = (Button) v.findViewById(R.id.btn_FTA); btnFTA.setOnClickListener(new OnClickListener() { @Override
      public void onClick(View v) {
      // TODO Auto-generated method stub
      //将值传给Activity
      String msg = et.getText().toString().trim(); callBackValue.sendMessage(msg);
      }
      }); return v;
      } }
  • fragment 获取 界面数据(Activity)

    • 可以fragment中直接getActivity 或者getContext 获取其对象
    • 或者动态创建时用setAgunment 在fragment中getAgument

14 fragment传值的更多相关文章

  1. 14 fragment 创建

    静态展示 注意 静态的开始进入界面的生命周期和动态的不同 详情:14 fragment注意点 步骤一:创建一个类继承 Fragment 代码类型一: package com.fmy.demo1; im ...

  2. 14 Fragment 碎片总结

    Fragment 碎片 一, Fragment是什么? Android 3.0以后出现的 Api11 以上 Activity的组成部分 Fragment(小的Activity) Fragment可以显 ...

  3. Android FragmentActivity 给Fragment传值

    1.Fragment给Activity传值 定义一个在fragment 中 定义interface 监听器,让activity实现,并将activity的引用传递给fragment.即setListe ...

  4. 【android】activity、fragment传值例子

    1:Activity篇 1.1向Activity传值 关键点在于putExtra.如果传递类的话,记得类实现Serializable接口 Intent intent = new Intent(Firs ...

  5. Activity向Fragment传值

    发送数据 //Activity传值,通过Bundle Bundle bundle = new Bundle(); bundle.putString("MainActivity", ...

  6. 【Android】安卓开发之activity如何传值到fragment,activity与fragment传值

    作者:程序员小冰,GitHub主页:https://github.com/QQ986945193 新浪微博:http://weibo.com/mcxiaobing 大家知道,我们利用activity使 ...

  7. 两个activity或者activity和fragment传值

    使用Fragment的时候可能需要在两个Fragment之间进行参数的传递,开始想着可以使用SharedPreferences进行处理,想想这些简单的参数没有必要使用这么麻烦的方式去实现,翻了一下Fr ...

  8. 14 Fragment的V4包的使用

    activity_main.xml: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android ...

  9. 14 Fragment 注意点

    API 过时问题 API 23过时 public void onAttach(Activity activity)替换为public void onAttach(Context context) 注意 ...

随机推荐

  1. ●CodeForces 480E Parking Lot

    题链: http://codeforces.com/problemset/problem/480/E题解: 单调队列,逆向思维 (在线的话应该是分治做,但是好麻烦..) 离线操作,逆向考虑, 最后的状 ...

  2. POJ2135:Farm Tour

    题意:给定一个无向图,从1走到n再从n走回1,每个边只能走一遍,求最短路 题解:可以定义一个源点s,和一个汇点t s和1相连容量为2,费用为0, t和n相连容量为2,费用为0 然后所用的边的容量都定为 ...

  3. 【bzoj4009 hnoi2015】接水果

    题目描述 风见幽香非常喜欢玩一个叫做 osu!的游戏,其中她最喜欢玩的模式就是接水果.由于她已经DT FC 了The big black, 她觉得这个游戏太简单了,于是发明了一个更加难的版本. 首先有 ...

  4. ●BZOJ 4518 [Sdoi2016]征途

    题链: http://www.lydsy.com/JudgeOnline/problem.php?id=4518 题解: 斜率优化DP 首先看看最后答案的形式: 设a[i]为第i天走的距离,那么 $A ...

  5. 【集训第二天·翻水的老师】--ac自动机+splay树

    今天是第二天集训.(其实已经是第三天了,只是昨天并没有机会来写总结,现在补上) 上午大家心情都很愉快,因为老师讲了splay树和ac自动机. 但到了下午,我们的教练竟然跑出去耍了(excuse me? ...

  6. bzoj1853[Scoi2010]幸运数字 容斥

    1853: [Scoi2010]幸运数字 Time Limit: 2 Sec  Memory Limit: 64 MBSubmit: 3027  Solved: 1128[Submit][Status ...

  7. springboot集成redis(mybatis、分布式session)

    安装Redis请参考:<CentOS快速安装Redis> 一.springboot集成redis并实现DB与缓存同步 1.添加redis及数据库相关依赖(pom.xml) <depe ...

  8. 如何理解主函数main中变量(int argc,char *argv[])的含义

    每一个C语言的初学者,都会注意到主函数main()里的两个参数,但是初学者一般不会去关注这两个参数的具体作用,下面我们就来介绍这两个参数的具体作用. main()函数是控制台程序的入口,int mai ...

  9. jquery easyui datagrid 编辑行 类型combobox

    完成编辑瞬间datagrid中显示的是combobox的value 而非text var rows=$('#tb1').datagrid('getRows'); for(var i=0;i<ro ...

  10. Java instanceof 关键字是如何实现的?

    作者:RednaxelaFX链接:https://www.zhihu.com/question/21574535/answer/18998914来源:知乎著作权归作者所有.商业转载请联系作者获得授权, ...