<?xml version="1.0" encoding="utf-8"?><LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"android:padding="16dp"><TextViewandroid:id="@+id/tv_activity_msg"android:layout_width="match_parent"android:layout_height="wrap_content"android:paddingBottom="12dp"android:text="Activity 收到 Fragment 的消息:无"android:textSize="16sp"/><Buttonandroid:id="@+id/btn_send_to_fragment"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="Activity 发消息给 Fragment"/><FrameLayoutandroid:id="@+id/container"android:layout_width="match_parent"android:layout_height="0dp"android:layout_marginTop="16dp"android:layout_weight="1"/></LinearLayout>
publicclassParentActivityextendsAppCompatActivity{// Activity -> Fragment 的广播publicstaticfinalStringACTION_FROM_ACTIVITY="com.example.ACTION_FROM_ACTIVITY";publicstaticfinalStringEXTRA_MSG_FROM_ACTIVITY="extra_msg_from_activity";// Fragment -> Activity 的广播publicstaticfinalStringACTION_FROM_FRAGMENT="com.example.ACTION_FROM_FRAGMENT";publicstaticfinalStringEXTRA_MSG_FROM_FRAGMENT="extra_msg_from_fragment";privateTextViewtvActivityMsg;@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_parent);tvActivityMsg=findViewById(R.id.tv_activity_msg);findViewById(R.id.btn_send_to_fragment).setOnClickListener(v->{Intentintent=newIntent(ACTION_FROM_ACTIVITY);intent.putExtra(EXTRA_MSG_FROM_ACTIVITY,"你好,我是 Activity");LocalBroadcastManager.getInstance(this).sendBroadcast(intent);});if(savedInstanceState==null){getSupportFragmentManager().beginTransaction().replace(R.id.container,newChildFragment()).commit();}}privatefinalBroadcastReceiverfragmentReceiver=newBroadcastReceiver(){@OverridepublicvoidonReceive(Contextcontext,Intentintent){if(ACTION_FROM_FRAGMENT.equals(intent.getAction())){Stringmsg=intent.getStringExtra(EXTRA_MSG_FROM_FRAGMENT);tvActivityMsg.setText("Activity 收到 Fragment 的消息:"+msg);}}};@OverrideprotectedvoidonStart(){super.onStart();// 注册接收 Fragment 的广播IntentFilterfilter=newIntentFilter(ACTION_FROM_FRAGMENT);LocalBroadcastManager.getInstance(this).registerReceiver(fragmentReceiver,filter);}@OverrideprotectedvoidonStop(){super.onStop();// 注销接收 Fragment 的广播LocalBroadcastManager.getInstance(this).unregisterReceiver(fragmentReceiver);}}