//在mainActivity中封装Bundle数据到Intent中再启动AACtivity
Intent intent = new Intent(MainActivity.this,AActivity.class);
Bundle bundle = new Bundle();
bundle.putString("name","zhangsan");
bundle.putInt("age",18);
intent.putExtra("user",bundle);
startActivityForResult(intent,0);
//在AACtivity中获取数据并显示
ntent intent = getIntent();
Bundle bundle = intent.getBundleExtra("user");
String str = "name:";
str += bundle.getString("name");
str += ",age:" + bundle.getInt("age");
mTvAShow.setText(str);
//关闭AActivity并且回传数据到MainACtivity显示
Intent intent = getIntent();
Bundle bundle = intent.getBundleExtra("user");
bundle.putString("name","lisi");
bundle.putInt("age",20);
setResult(200,intent);
finish();
//重写AActivity中的关于回退的处理
@Override
public void onBackPressed() {
Intent intent = getIntent();
Bundle bundle = intent.getBundleExtra("user");
bundle.putString("name","lisi");
bundle.putInt("age",20);
setResult(200,intent);
super.onBackPressed();
}
//MainActivity中
static User user = new User();
//MainActivity中的监听器注册
AActivity.aActivityListener = new AActivity.AActivityListener(){
@Override
public void getMessage() {
String str = "name:";
str += user.name;
str += ",age:" + user.age;
mTvShow.setText(str);
}
};
//AActivity中的静态监听器变量
public static AActivityListener aActivityListener;
//AActivity中的监听器接口定义
public interface AActivityListener{
public void getMessage();
}
//改变数据并且回调MainACtivity中的方法
MainActivity.user.name = "lisi";
MainActivity.user.age = 20;
aActivityListener.getMessage();
finish();
//继承Application并在自己的app类中携带数据
public class MyApplication extends Application { {
//此处声明一个public static 成员来实现数据通信
private static String name = "Son of the sea";
public void setName(String name){
this.name = name;
}
public String getName() {
return this.name ;
}
}
//其它Activity中获取或者改变数据的方式
MyApplication app = (MyApplication) getApplicationContext();
app.setName("Son of the king");
//必须在清单文件中加以说明
<application
android:name=".MyApplication "
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:label="@string/app_name"
android:name=".MainActivity" >
<intent-filter >
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
//在Fragment中提供newInstance的方法:用于Activity向Fragment中传入数据
public static ContentFragment newInstance(String argument){
Bundle bundle = new Bundle();
bundle.putString("msg", argument);
ContentFragment contentFragment = new ContentFragment();
contentFragment.setArguments(bundle);
return contentFragment;
}
// 在Fragment的onCreate方法中获取Activity中传入的参数
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
Bundle bundle = getArguments();
if (bundle != null)
mArgument = bundle.getString("tag");
}
//Fragment中添加监听器成员并定义接口
private onTestListener listener;
public interface onTestListener{
public void onTest(String str);
}
//Fragment中提供注册监听的方式
public setTestListener(onTestListener callback){
listener = callback;
}
//Fragment在需要向Activity中发送数据时,调用监听器方法
listener.onTest(string);
//Activity中设置注册监听器并提供实现
Fragment fragment = new ContentFragment();
fragment.setTestListener(new ContentFragment.onTestListener(){
@Override
public void onTest(String str) {
Log.d(TAG,str);
//执行更新UI操作或其他操作
}
})
//FragmentA发消息给FragmentB
//在FragmentA中通过以下调用获得FragmentB的引用并设置参数
//在FragmentB中可以获得此参数
Fragment fragment = activity.getFragmentManager().findFragmentByTag(R.id.fragmentb);
Bundle bundle = new Bundle();
bundle.putString("msg",string);
fragment.setArguments(bundle);
//FragmentB主动向FragmentA发送数据:FragmentB中定义接口
//FragmentA调用设置监听的方法提供监听器实现
//FragmentB在需要传送数据时调用监听器方法即可
适合在layout中定义的单个fragment
getSupportFragmentManager().findFragmentById();
适合定义的多个fragment,可在xml文件和代码中添加tag
getSupportFragmentManager().findFragmentByTag();