一、Activity->Activity
1.Intent
通过Intent携带需要的信息,但要注意,intent对携带写信的大小有限制,传递对象要实现序列化接口
startActivity()
startActivityForResult()
2.Broadcast或者LocalBroadcast或者EventBus
在A中发出广播,在B中接收广播并解析其中数据
3.用数据存储的方式
理论上凡是数据存储的方式,我们均能在A存储信息,并在B读取,达到通信的目的
SharedPreference
SQLite
File
Android剪切板等
4.使用静态变量
在A中将静态变量赋值,在B中读取并置空
二、Activity->Fragment
在Activity中:
// 步骤1:获取FragmentManager
FragmentManager fragmentManager = getFragmentManager();
// 步骤2:获取FragmentTransaction
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
// 步骤3:创建需要添加的Fragment
final mFragment fragment = new mFragment();
// 步骤4:创建Bundle对象
// 作用:存储数据,并传递到Fragment中
Bundle bundle = new Bundle();
// 步骤5:往bundle中添加数据
bundle.putString("message", "I love Google");
// 步骤6:把数据设置到Fragment中
fragment.setArguments(bundle);
// 步骤7:动态添加fragment
// 即将创建的fragment添加到Activity布局文件中定义的占位符中(FrameLayout)
fragmentTransaction.add(R.id.fragment_container, fragment);
fragmentTransaction.commit();
在Fragment中
// 步骤1:通过getArgments()获取从Activity传过来的全部值
Bundle bundle = this.getArguments();
// 步骤2:获取某一值
String message = bundle.getString("message");
三、Fragment->Activity
定义一接口
public interface ICallBack {
void get_message_from_Fragment(String string);
}
在Fragment中
// 设置 接口回调 方法
public void sendMessage(ICallBack callBack){
callBack.get_message_from_Fragment("消息:我来自Fragment");
}
在Activity中
// 步骤1:获取FragmentManager
FragmentManager fragmentManager = getFragmentManager();
// 步骤2:获取FragmentTransaction
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
// 步骤3:创建需要添加的Fragment
mFragment fragment = new mFragment();
// 步骤4:动态添加fragment
// 即将创建的fragment添加到Activity布局文件中定义的占位符中(FrameLayout)
fragmentTransaction.add(R.id.fragment_container, fragment);
fragmentTransaction.commit();
// 通过接口回调将消息从fragment发送到Activity
fragment.sendMessage(new ICallBack() {
@Override
public void get_message_from_Fragment(String string) {
String msg = string;
}
});
四、Fragment->Fragment
在Fragment1中
public String getMessage() {
return “你好”;
}
在Fragment2中
Fragment1 cf = (Fragment1) getActivity()
.getFragmentManager().findFragmentById(R.id.content_fg);
String msg = cf.getMessage();
END~~
网友评论