Android广播接收器和Activity间传递数据
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Android广播接收器和Activity间传递数据,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3254字,纯文字阅读大概需要5分钟。
内容图文
Activity向广播接收器传递数据很简单,只需要在发送广播前将数据put进Intent中就行了。
广播接收器怎么向Activity传送数据?这里要用到接口,通过在广播接收器里定义一个接口,然后让接收广播接收器数据的Activity实现这个接口。先看下面的栗子,Activity发送一个广播,然后广播接收器返回一个字符串。
Activity布局文件
1 <? xml version="1.0" encoding="utf-8" ?> 2 < LinearLayout xmlns:android ="http://schemas.android.com/apk/res/android" 3 xmlns:tools ="http://schemas.android.com/tools" 4 android:layout_width ="match_parent" 5 android:layout_height ="match_parent" 6 android:orientation ="vertical" 7 tools:context ="com.nangch.broadcastreceivertest.MainActivity" > 8 9 < TextView 10 android:id ="@+id/tv" 11 android:layout_width ="wrap_content" 12 android:layout_height ="wrap_content" 13 android:text ="hello" /> 14 15 < Button 16 android:id ="@+id/btn" 17 android:layout_width ="match_parent" 18 android:layout_height ="wrap_content" 19 android:text ="发送广播" /> 20 </ LinearLayout >
Activity代码
1 import android.content.Intent; 2 import android.content.IntentFilter; 3 import android.os.Bundle; 4 import android.support.v7.app.AppCompatActivity; 5 import android.view.View; 6 import android.widget.Button; 7 import android.widget.TextView; 8 9 public class MainActivity extends AppCompatActivity implements MyReceiver.Message{ 1011 TextView tv; 12 MyReceiver myReceiver; 1314 @Override 15protectedvoid onCreate(Bundle savedInstanceState) { 16super.onCreate(savedInstanceState); 17 setContentView(R.layout.activity_main); 1819//注册广播接收器20 myReceiver = new MyReceiver(); 21 IntentFilter intentFilter = new IntentFilter(); 22 intentFilter.addAction("com.nangch.broadcasereceiver.MYRECEIVER"); 23 registerReceiver(myReceiver, intentFilter); 2425//因为这里需要注入Message,所以不能在AndroidManifest文件中静态注册广播接收器26 myReceiver.setMessage(this); 2728 tv = (TextView) findViewById(R.id.tv); 29 Button btn = (Button) findViewById(R.id.btn); 30 btn.setOnClickListener(new View.OnClickListener() { 31 @Override 32publicvoid onClick(View v) { 33 Intent intent = new Intent("com.nangch.broadcasereceiver.MYRECEIVER"); 34 intent.putExtra("hello", tv.getText()); //向广播接收器传递数据35 sendBroadcast(intent); //发送广播36 } 37 }); 38 } 3940 @Override 41publicvoid getMsg(String str) { 42//通过实现MyReceiver.Message接口可以在这里对MyReceiver中的数据进行处理43 tv.append(str); 44 } 4546 @Override 47protectedvoid onDestroy() { 48super.onDestroy(); 49 unregisterReceiver(myReceiver); //注销广播接收器50 } 51 }
广播接收器代码
1 import android.content.BroadcastReceiver; 2 import android.content.Context; 3 import android.content.Intent; 4 import android.widget.Toast; 5 6 public class MyReceiver extends BroadcastReceiver { 7private Message message; 8 9 @Override 10publicvoid onReceive(Context context, Intent intent) { 11//接收MainActivity传过来的数据12 Toast.makeText(context, intent.getStringExtra("hello"), Toast.LENGTH_SHORT).show(); 1314//调用Message接口的方法15 message.getMsg(" world"); 16 } 1718interface Message { 19publicvoid getMsg(String str); 20 } 2122publicvoid setMessage(Message message) { 23this.message = message; 24 } 25 }
效果图如下:
点击发送广播按钮后:
在MyReceiver中定义一个Message接口,并声明一个Message类型的成员变量message。然后让MainActivity实现这个接口,并调用setMessage方法将MainActivity注入,这样MainActivity实例就成了Myreceiver的成员变量message,这样就能处理MyReceiver中的数据了。这种思想和我们学习Android时设置按钮监听器的思想差不多,仔细想一下还是很好理解的。
原文:http://www.cnblogs.com/nangch/p/5353563.html
内容总结
以上是互联网集市为您收集整理的Android广播接收器和Activity间传递数据全部内容,希望文章能够帮你解决Android广播接收器和Activity间传递数据所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。