写一个安卓代码并解释,要求如下:在MsgListActivity中注册广播,收到广播后弹出对话框,点击对话框“退出”按钮,跳到LoginActivity。
时间: 2024-03-26 12:38:35 浏览: 27
好的,这是一个基本的安卓代码实现,以下是代码和解释:
1. 在MsgListActivity中注册广播
```java
public class MsgListActivity extends AppCompatActivity {
private BroadcastReceiver mBroadcastReceiver;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_msg_list);
// 注册广播
mBroadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// 收到广播后弹出对话框
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setTitle("提示");
builder.setMessage("是否退出当前账号?");
builder.setPositiveButton("退出", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// 跳到LoginActivity
Intent intent = new Intent(MsgListActivity.this, LoginActivity.class);
startActivity(intent);
finish();
}
});
builder.setNegativeButton("取消", null);
builder.show();
}
};
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("com.example.broadcast.LOGOUT");
registerReceiver(mBroadcastReceiver, intentFilter);
}
@Override
protected void onDestroy() {
super.onDestroy();
// 取消注册广播
unregisterReceiver(mBroadcastReceiver);
}
}
```
2. 发送广播
```java
Intent intent = new Intent("com.example.broadcast.LOGOUT");
sendBroadcast(intent);
```
在需要发送广播的地方调用上述代码即可。这里的广播action是"com.example.broadcast.LOGOUT",可以根据需要自定义。
解释:
首先在MsgListActivity的onCreate()方法中注册广播,指定了广播的action为"com.example.broadcast.LOGOUT"。当收到该广播时,弹出一个对话框,询问用户是否退出当前账号。如果用户点击对话框的“退出”按钮,就跳转到LoginActivity。在MsgListActivity销毁时,取消注册广播。
在需要退出当前账号的地方发送广播,MsgListActivity接收到广播后就会弹出对话框。