array(2) { ["docs"]=> array(10) { [0]=> array(10) { ["id"]=> string(3) "428" ["text"]=> string(77) "Visual Studio 2017 单独启动MSDN帮助(Microsoft Help Viewer)的方法" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(8) "DonetRen" ["tagsname"]=> string(55) "Visual Studio 2017|MSDN帮助|C#程序|.NET|Help Viewer" ["tagsid"]=> string(23) "[401,402,403,"300",404]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400964" ["_id"]=> string(3) "428" } [1]=> array(10) { ["id"]=> string(3) "427" ["text"]=> string(42) "npm -v;报错 cannot find module "wrapp"" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "zzty" ["tagsname"]=> string(50) "node.js|npm|cannot find module "wrapp“|node" ["tagsid"]=> string(19) "[398,"239",399,400]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400760" ["_id"]=> string(3) "427" } [2]=> array(10) { ["id"]=> string(3) "426" ["text"]=> string(54) "说说css中pt、px、em、rem都扮演了什么角色" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(12) "zhengqiaoyin" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400640" ["_id"]=> string(3) "426" } [3]=> array(10) { ["id"]=> string(3) "425" ["text"]=> string(83) "深入学习JS执行--创建执行上下文(变量对象,作用域链,this)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "Ry-yuan" ["tagsname"]=> string(33) "Javascript|Javascript执行过程" ["tagsid"]=> string(13) "["169","191"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511399901" ["_id"]=> string(3) "425" } [4]=> array(10) { ["id"]=> string(3) "424" ["text"]=> string(30) "C# 排序技术研究与对比" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "vveiliang" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(8) ".Net Dev" ["catesid"]=> string(5) "[199]" ["createtime"]=> string(10) "1511399150" ["_id"]=> string(3) "424" } [5]=> array(10) { ["id"]=> string(3) "423" ["text"]=> string(72) "【算法】小白的算法笔记:快速排序算法的编码和优化" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "penghuwan" ["tagsname"]=> string(6) "算法" ["tagsid"]=> string(7) "["344"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511398109" ["_id"]=> string(3) "423" } [6]=> array(10) { ["id"]=> string(3) "422" ["text"]=> string(64) "JavaScript数据可视化编程学习(二)Flotr2,雷达图" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "chengxs" ["tagsname"]=> string(28) "数据可视化|前端学习" ["tagsid"]=> string(9) "[396,397]" ["catesname"]=> string(18) "前端基本知识" ["catesid"]=> string(5) "[198]" ["createtime"]=> string(10) "1511397800" ["_id"]=> string(3) "422" } [7]=> array(10) { ["id"]=> string(3) "421" ["text"]=> string(36) "C#表达式目录树(Expression)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "wwym" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(4) ".NET" ["catesid"]=> string(7) "["119"]" ["createtime"]=> string(10) "1511397474" ["_id"]=> string(3) "421" } [8]=> array(10) { ["id"]=> string(3) "420" ["text"]=> string(47) "数据结构 队列_队列实例:事件处理" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "idreamo" ["tagsname"]=> string(40) "C语言|数据结构|队列|事件处理" ["tagsid"]=> string(23) "["246","247","248",395]" ["catesname"]=> string(12) "数据结构" ["catesid"]=> string(7) "["133"]" ["createtime"]=> string(10) "1511397279" ["_id"]=> string(3) "420" } [9]=> array(10) { ["id"]=> string(3) "419" ["text"]=> string(47) "久等了,博客园官方Android客户端发布" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(3) "cmt" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511396549" ["_id"]=> string(3) "419" } } ["count"]=> int(200) } 222 Android(Fragment和Activity之间通信) - 爱码网

Fragment的使用可以让我们的应用更灵活的适配各种型号的安卓设备,但是对于Fragment和Activity之间的通信,很多朋友应该比较陌生,下面我们就通过一个实例来看一看如何实现。

一、Activity->Fragment传递数据

1.main.xml:
[html] view plaincopy
 
  1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  2.     xmlns:tools="http://schemas.android.com/tools"  
  3.     android:layout_width="match_parent"  
  4.     android:id="@+id/rl_fragment"  
  5.     android:orientation="vertical"  
  6.     android:layout_height="match_parent" >  
  7.   
  8.     <EditText  
  9.         android:id="@+id/et_input"  
  10.         android:layout_width="match_parent"  
  11.         android:layout_height="wrap_content" />  
  12.   
  13.     <Button  
  14.         android:id="@+id/btn_send"  
  15.         android:layout_width="wrap_content"  
  16.         android:layout_height="wrap_content"  
  17.         android:text="发送" />  
  18.   
  19. </LinearLayout>  

2.fragment.xml:
[html] view plaincopy
 
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:layout_width="match_parent"  
  4.     android:layout_height="match_parent"  
  5.     android:orientation="vertical" >  
  6.     <TextView  
  7.         android:id="@+id/tv_fragment"  
  8.         android:layout_height="wrap_content"  
  9.         android:layout_width="wrap_content"  
  10.         />  
  11.   
  12. </LinearLayout>  

3.MainActivity.java:
[java] view plaincopy
 
  1. package com.example.fragementcommunication;  
  2.   
  3. import android.app.Activity;  
  4. import android.app.FragmentManager;  
  5. import android.app.FragmentTransaction;  
  6. import android.os.Bundle;  
  7. import android.view.View;  
  8. import android.view.View.OnClickListener;  
  9. import android.view.Window;  
  10. import android.widget.Button;  
  11. import android.widget.EditText;  
  12. import android.widget.Toast;  
  13.   
  14. public class MainActivity extends Activity {  
  15.     private EditText mMainActivityET;  
  16.     private Button mSendButton;  
  17.   
  18.     @Override  
  19.     protected void onCreate(Bundle savedInstanceState) {  
  20.         super.onCreate(savedInstanceState);  
  21.         requestWindowFeature(Window.FEATURE_NO_TITLE);  
  22.         setContentView(R.layout.activity_main);  
  23.         mMainActivityET = (EditText) findViewById(R.id.et_input);  
  24.         mSendButton = (Button) findViewById(R.id.btn_send);  
  25.         mSendButton.setOnClickListener(new OnClickListener() {  
  26.   
  27.             @Override  
  28.             public void onClick(View v) {  
  29.                 String text = mMainActivityET.getText().toString();  
  30.                 MyFragment myFragment = new MyFragment();  
  31.                 Bundle bundle = new Bundle();  
  32.                 bundle.putString("input", text);  
  33.                 myFragment.setArguments(bundle);// 传递string  
  34.                 FragmentManager manager = getFragmentManager();  
  35.                 FragmentTransaction transaction = manager.beginTransaction();  
  36.                 transaction.add(R.id.rl_fragment, myFragment, "myfragment");  
  37.                 transaction.commit();  
  38.                 Toast.makeText(MainActivity.this, "向Fragment发送数据" + text, Toast.LENGTH_SHORT).show();  
  39.   
  40.             }  
  41.         });  
  42.     }  
  43. }  

4.MyFragment.java:
[java] view plaincopy
 
  1. package com.example.fragementcommunication;  
  2.   
  3. import android.app.Fragment;  
  4. import android.os.Bundle;  
  5. import android.view.LayoutInflater;  
  6. import android.view.View;  
  7. import android.view.ViewGroup;  
  8. import android.widget.TextView;  
  9. import android.widget.Toast;  
  10.   
  11. public class MyFragment extends Fragment {  
  12.     @Override  
  13.     public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {  
  14.         View view = inflater.inflate(R.layout.fragmet, null);  
  15.         TextView mFragmentTextView = (TextView) view.findViewById(R.id.tv_fragment);  
  16.         String string = getArguments().getString("input");// 获取数据;  
  17.         mFragmentTextView.setText(string);  
  18.         Toast.makeText(getActivity(), "成功获取数据" + string, Toast.LENGTH_SHORT).show();  
  19.         return view;  
  20.     }  
  21.   
  22. }  

总结:发送数据方法->setArguments(bundle)
            接收数据方法->getArguments()
 
下面我们看一下效果:
Android(Fragment和Activity之间通信)
 
 

二、Fragment向Activity传值(接口回调的方式)

布局文件和上面一样,我们看一下java代码的改变:
1.MainActivity.java:
 
[java] view plaincopy
 
  1. package com.example.fragementcommunication;  
  2.   
  3. import com.example.fragementcommunication.MyFragment.MyListener;  
  4.   
  5. import android.app.Activity;  
  6. import android.app.FragmentManager;  
  7. import android.app.FragmentTransaction;  
  8. import android.os.Bundle;  
  9. import android.view.View;  
  10. import android.view.View.OnClickListener;  
  11. import android.view.Window;  
  12. import android.widget.Button;  
  13. import android.widget.EditText;  
  14. import android.widget.Toast;  
  15.   
  16. public class MainActivity extends Activity implements MyListener{  
  17.     private EditText mMainActivityET;  
  18.     private Button mSendButton;  
  19.   
  20.     @Override  
  21.     protected void onCreate(Bundle savedInstanceState) {  
  22.         super.onCreate(savedInstanceState);  
  23.         requestWindowFeature(Window.FEATURE_NO_TITLE);  
  24.         setContentView(R.layout.activity_main);  
  25.         mMainActivityET = (EditText) findViewById(R.id.et_input);  
  26.         mSendButton = (Button) findViewById(R.id.btn_send);  
  27.         mSendButton.setOnClickListener(new OnClickListener() {  
  28.   
  29.             @Override  
  30.             public void onClick(View v) {  
  31.                 String text = mMainActivityET.getText().toString();  
  32.                 MyFragment myFragment = new MyFragment();  
  33.                 Bundle bundle = new Bundle();  
  34.                 bundle.putString("input", text);  
  35.                 myFragment.setArguments(bundle);// 传递string  
  36.                 FragmentManager manager = getFragmentManager();  
  37.                 FragmentTransaction transaction = manager.beginTransaction();  
  38.                 transaction.add(R.id.rl_fragment, myFragment, "myfragment");  
  39.                 transaction.commit();  
  40.                 Toast.makeText(MainActivity.this, "向Fragment发送数据" + text, Toast.LENGTH_SHORT).show();  
  41.   
  42.             }  
  43.         });  
  44.     }  
  45.   
  46.     @Override  
  47.     public void callback(String back) {  
  48.         Toast.makeText(MainActivity.this, "获取到从Fragment中传来的数据" + back, Toast.LENGTH_SHORT).show();  
  49.           
  50.     }  
  51. }  

2.MyFragment.java:
[java] view plaincopy
 
  1. package com.example.fragementcommunication;  
  2.   
  3. import android.app.Activity;  
  4. import android.app.Fragment;  
  5. import android.os.Bundle;  
  6. import android.view.LayoutInflater;  
  7. import android.view.View;  
  8. import android.view.ViewGroup;  
  9. import android.widget.TextView;  
  10. import android.widget.Toast;  
  11.   
  12. public class MyFragment extends Fragment {  
  13.     public MyListener listener;  
  14.     private String back="已经接收到数据!谢谢";  
  15.     /** 
  16.      * 通过接口回调的方式从Fragment向activity传值; 
  17.      * @author Administrator 
  18.      * 
  19.      */  
  20.     public interface MyListener{  
  21.         public void callback(String back);  
  22.     }  
  23.       
  24.     @Override  
  25.     public void onAttach(Activity activity) {  
  26.         super.onAttach(activity);  
  27.         listener=(MyListener) activity;  
  28.     }  
  29.     @Override  
  30.     public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {  
  31.         View view = inflater.inflate(R.layout.fragmet, null);  
  32.         TextView mFragmentTextView = (TextView) view.findViewById(R.id.tv_fragment);  
  33.         String string = getArguments().getString("input");// 获取数据;  
  34.         mFragmentTextView.setText(string);  
  35.         Toast.makeText(getActivity(), "成功获取数据" + string, Toast.LENGTH_SHORT).show();  
  36.         Toast.makeText(getActivity(), "向Activity传递数据" + back, Toast.LENGTH_SHORT).show();  
  37.         listener.callback(back);  
  38.           
  39.         return view;  
  40.     }  
  41.   
  42. }  

运行如下:
 
Android(Fragment和Activity之间通信)
这时我们可以看到先是MainActivity向Fragment传递了123,然后Fragment向Activity传递了”已经接收到数据!谢谢“。
 
 
转自:http://blog.csdn.net/yayun0516/article/details/48210953
 

相关文章: