几种监听事件和广播介绍。先说说几种监听事件。
几种监听事件
在xml文件中设置
第1步:xml文件中设置onClick
1 2 3 4 5 6 7
| <Button android:id="@+id/send" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/et_text" android:text="@string/send" android:onClick="send"/>
|
第二步:activity中写监听方法
1 2 3
| public void send(View v) { }
|
匿名内部类
1 2 3 4
| 第一种方法: bt_send.setOnClickListener((new View.OnClickListener(){ public void onClick(View v){ }}));
|
内部类
1 2 3 4 5
| bt_send.setOnClickListener(new MyOnclickListener()){
private class MyOnClickListener implements OnClickListener{ public void onClick(View v){ }}
|
广播(BroadCast)
Android 系统会发送许多系统级别的广播,例如:屏幕关闭、电池电量低等广播。
Android 分为两个方面:广播发送者和接受者。
BroadcastReceiver 指的就是广播接受者(广播接收器)
第一种实现方式:
- 在 Activity.xml 布局一个按钮,点击事件(只是举例);
- 在 MainActivity 中发送广播;
- 在 Androidmanifest.xml 配置;
- 新建 java 类,继承 BroadcastReceiver,写一个收到广播的调用方法。
1 2 3 4 5 6 7 8
| public void send(View v){
Intent intent =new Intent(); intent.setAction("guangbo"); intent.putExtra("name","张三"); sendBroadcast(intent); }
|
1 2 3 4 5
| <receiver android:name=".MyBroadcastReceiver"> <intent-filter> <action android:name="guangbo"></action> </intent-filter> </receiver>
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| public class MyBroadcastReceiver extends BroadcastReceiver {
private static final String TAG = "MyBroadcastReceiver" ;
@Override public void onReceive(Context context, Intent intent) {
if(intent.getAction().equals("guangbo")){ String name = intent.getStringExtra("name"); Log.i(TAG,"name:" +name); }
} }
|
第二种实现方式:
- 在 Activity.xml 布局一个按钮,点击事件(只是举例)(同上);
- 在 MainActivity 中发送广播,订阅广播,取消广播;
- 新建 java 类,继承 BroadcastReceiver,写一个收到广播的调用方法 (同上)。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| public class MainActivity extends AppCompatActivity {
private BroadcastReceiver receiver;
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);
receiver = new MyBroadcastReceiver(); IntentFilter filter = new IntentFilter(); filter.addAction("guangbo"); registerReceiver(receiver,filter); } public void send(View v){
Intent intent =new Intent(); intent.setAction("guangbo"); intent.putExtra("name","张三"); sendBroadcast(intent); }
@Override protected void onDestroy() { super.onDestroy();
unregisterReceiver(receiver); } }
|