Fragment如何接受广播
来源:互联网 发布:mac pro 2016处理器 编辑:程序博客网 时间:2024/04/29 06:43
在Android开发中,我们经常需要利用Fragment来动态更新UI,我们利用Service进行联网,从网上下载下来的数据通过广播出去,再利用Receiver接受,下面是例子:
这是service的写法:
public class InternetService extends Service {@Overridepublic IBinder onBind(Intent intent) {// TODO Auto-generated method stubreturn binder;}@Overridepublic void onCreate() {lm = new LogicMethod(this);super.onCreate();}@Overridepublic void onStart(Intent intent, int startId) {if (method.equals("login")) {final String username = bundle.getString("username");final String password = bundle.getString("password");new Thread() {@Overridepublic void run() {try {String SendData = null;SendData = xmlhead + "<request><method>" + method+ "</method><username>" + username+ "</username><password>" + password+ "</password></request>";String st = nu.XHttp(SendData);if (null != st) {BroadCastMethod(st, "com.onpiece.sslogin");} else {BroadCastMethod("connection fail!","com.onpiece.sslogin");Log.i(TAG, "st is null");}} catch (Exception e) {e.printStackTrace();}}}.start();}else {}}private boolean BroadCastMethod(String st, String ReceiveAction) {Intent intentReceiver = new Intent();intentReceiver.setAction(ReceiveAction);// intentReceiver.putExtra("name", "sucess\r\n");Log.i(TAG, "st is " + st);if (null == st) {intentReceiver.putExtra("name", "");} else {intentReceiver.putExtra("name", st);}intentReceiver.putExtra("networkstat", NetworkStat);intentReceiver.putExtra("netavailablestat", NetworkAvailableStat);InternetService.this.sendBroadcast(intentReceiver);Log.i(TAG, "发送广播成功");return true;}@Overridepublic void onDestroy() {System.out.println("----onDestory-----");super.onDestroy();}}
public class ContactsFragment extends Fragment {@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {View contactsLayout = inflater.inflate(R.layout.contacts_layout,container, false);CFcontext = this;mListView = (ListView) contactsLayout.findViewById(R.id.contact_name_listview);return contactsLayout;}private class MyReceiver extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {Log.i(TAG, "in onReceive");String return_data = intent.getExtras().getString("name");if (return_data != null && return_data != "") {XmlParser xpm = new XmlParser();String status = xpm.XMLParseMethod(return_data, "status");if (status.equals("0")) {String username = xpm.XMLParseMethod(return_data,"username");Log.i(TAG, "username is " + username);String usersex = xpm.XMLParseMethod(return_data, "usersex");List<String> items = new ArrayList<String>();items.add(username);i++;ArrayAdapter<String> adapter = new ArrayAdapter<String>(CFcontext.getActivity(),android.R.layout.simple_list_item_1, items);mListView.setAdapter(adapter);} else if (status.equals("getcontactname")) {String outcome = xpm.XMLParseMethod(return_data, "outcome");if (outcome.equals("connection fail!")) {Log.i(TAG, "嘿嘿,联网失败");Toast.makeText(CFcontext.getActivity(), "嘿嘿,联网失败",Toast.LENGTH_SHORT).show();}}}}}@Overridepublic void onAttach(Activity activity) {Log.i(TAG, "in onAttach");/** 注册广播 */receiver = new MyReceiver();IntentFilter filter = new IntentFilter();filter.addAction("com.onpiece.ContactsFragment"); // 只有持有相同的action的接受者才能接收此广播activity.registerReceiver(receiver, filter);super.onAttach(activity);}}
不能用这种方法接收广播,如下:
// if (null == receiver) {// receiver = new MyReceiver();// }// LocalBroadcastManager broadcastManager = LocalBroadcastManager// .getInstance(getActivity());// IntentFilter filter = new IntentFilter();// // filter.addCategory(Intent.CATEGORY_DEFAULT);// filter.addAction("com.onpiece.ContactsFragment");// broadcastManager.registerReceiver(receiver, filter);利用这种方法接收不到广播。原因现在还不知道。。。
0 0
- Fragment如何接受广播
- UDP广播和接受
- 接受和发送广播
- 接受和发送广播
- 接受广播BroadcastReceiver
- 接受广播消息
- 自定义 发送广播,并接受广播
- udp 局域网广播接受代码
- htc无法接受udp广播
- 24 接受自定义的广播
- android接受不到开机广播
- FLAG_EXCLUDE_STOPPED_PACKAGES导致接受不到广播
- EventBus实现广播的接受
- 广播接受-网络状态查询
- 接受系统广播消息 BroadcastReceiver
- 22 接受收到短信广播
- 两种广播接受方式
- Android 接受广播唤醒屏幕
- 查找字符流中第一个出现的不重复字符
- Cryptsetup加密存储设备之二(Android篇)
- 利用freetype显示中文字符
- 在iOS上启动root特权的后台进程
- 好几天没看书写代码了
- Fragment如何接受广播
- linux文件句柄
- socket io管理模型总结(Linux、Windows)
- uva10041
- hdu 1142 A Walk Through the Forest (最短路+dfs )
- Oracle内存结构
- UML类图示例一张:公司结构
- nginx配置文档,转
- Java 多线程之--- Thread.join介绍