Fragment——Activity与Fragment之间进行通信
2016-03-14 20:32
531 查看
1、Activity向其所包含的Fragment传递数据
在Activity中放置一个EditText和Button,为Button设置点击监听事件,在onclick()方法中通过调用Fragment的setArguments()方法向Fragment中传递数据。
Activity类:
Fragment类:
2、Fragment向包含自身的Activity传递数据
在Fragment类内部声明一个接口,接口内声明回调函数,并使Activity实现该接口,通过Fragment.getActivity()方法获得一个接口的实例对象,当Fragment中的某一事件出发时即可调用回调函数来实现数据的传递。
Fragment类:
Activity类:
在Activity中放置一个EditText和Button,为Button设置点击监听事件,在onclick()方法中通过调用Fragment的setArguments()方法向Fragment中传递数据。
Activity类:
send = (Button) findViewById(R.id.send); editText = (EditText) findViewById(R.id.editText); send.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String msg = editText.getText().toString(); Bundle bundle = new Bundle(); bundle.putString("msg", msg); Fragment fragment = new Fragment(); fragment.setArguments(bundle); FragmentManager fragmentManager = getFragmentManager(); FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); fragmentTransaction.add(R.id.fragmentView,fragment,"fragmentTest"); fragmentTransaction.commit(); } });
Fragment类:
@Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment, container, false); TextView textView = (TextView) view.findViewById(R.id.textView); Bundle bundle = getArguments(); if(bundle != null){ String msg = bundle.getString("msg"); textView.setText(msg); } return view; }
2、Fragment向包含自身的Activity传递数据
在Fragment类内部声明一个接口,接口内声明回调函数,并使Activity实现该接口,通过Fragment.getActivity()方法获得一个接口的实例对象,当Fragment中的某一事件出发时即可调用回调函数来实现数据的传递。
Fragment类:
public class Fragment extends android.app.Fragment { private onButtonClickedListener listener; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment, container, false); try{ //通过getActivity()方法获取回调接口的一个实例对象 listener = (onButtonClickedListener)getActivity(); }catch(ClassCastException e) { throw new ClassCastException(getActivity().toString() + " must implement OnArticleSelectedListener"); } Button returnMsg = (Button)view.findViewById(R.id.returnMsg); //在Button的事件监听中调用回调函数,并将数据传入 returnMsg.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { listener.getMessage("testMsg"); } }); return view; } public interface onButtonClickedListener{ public void getMessage(String str); } }
Activity类:
public class MainActivity extends Activity implements Fragment.onButtonClickedListener{ private TextView tetView = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); textView = (TextView)findViewById(R.id.textView); } //实现接口中的回调函数 @Override public void getMessage(String str) { textView = (TextView)findViewById(R.id.returnedMsg); textView.setText(str); } }
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories