广播与activity的交互可以通过接口回调的方式或者handler
/*********************************************************activity**********************************************/protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); FragmentManager fm = getFragmentManager(); FragmentTransaction ft = fm.beginTransaction(); fragment1 = new Fragment1(); ft.add(R.id.f1, fragment1); ft.commit(); mb = new MyBroadCast(); IntentFilter inf = new IntentFilter("com.sharetronic.test.MY_BROADCAST"); registerReceiver(mb, inf); mb.setBRInteractionListener(this); Intent intent = new Intent("com.sharetronic.test.MY_BROADCAST"); sendBroadcast(intent); } @Override public void setText(String text) { if (text!=null){ Toast.makeText(MainActivity.this, "11111111111111", Toast.LENGTH_SHORT).show(); // oo.setmesg(text); mhandler.obtainMessage(0x01,text).sendToTarget(); } } public void setHandler(Handler handler){ mhandler =handler; }/*****************************************************broadcast*************************************/public void onReceive(Context context, Intent intent) { Toast.makeText(context, "received in MyBroadcastReceiver", Toast.LENGTH_SHORT).show(); brInteraction.setText("received in MyBroadcastReceiver"); } public interface Brecive{ public void setText(String text); } public void setBRInteractionListener(Brecive brInteraction) { this.brInteraction = brInteraction; }/************************************************fragment**********************************************/@Override public void onAttach(Activity activity) { super.onAttach(activity); mactivity = (MainActivity)activity; mactivity.setHandler(mhandler); } @Nullable @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.layout2,null); tv = (TextView) view.findViewById(R.id.tv); return view; } private Handler mhandler = new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); switch (msg.what){ case 0x01: String string = (String) msg.obj; Log.d("TAG",string); tv.setText(string); // Toast.makeText(activity, "11111111111111", Toast.LENGTH_SHORT).show(); break; } } };
本文探讨了在Android中如何通过接口回调和Handler机制实现广播接收器与Activity之间的交互,以更新Fragment的内容。

539

被折叠的 条评论
为什么被折叠?



