栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

本地广播的使用

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

本地广播的使用

本地广播 发送方
@Override
package com.example.eventbus;

import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.DialogFragment;
import androidx.localbroadcastmanager.content.LocalBroadcastManager;


public class PublishDialogFragment extends DialogFragment {

    @NonNull
    @Override
    public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
        //创建Dialog的方法
        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
        builder.setTitle("publish");
        String[] items = {"success","failure"};
        builder.setItems(items, new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                switch (which){
                    case 0:
                        //Success
                        Intent intent = new Intent();
                        intent.setAction(MainActivity.HANDLE_EVENT_ACTION);
                        intent.putExtra(MainActivity.STATUS,true);
                        LocalBroadcastManager.getInstance(getActivity()).sendBroadcast(intent);
                        break;
                    case 1:
                        //failure
                        Intent it = new Intent();
                        it.setAction(MainActivity.HANDLE_EVENT_ACTION);
                        it.putExtra(MainActivity.STATUS,false);
                        LocalBroadcastManager.getInstance(getActivity()).sendBroadcast(it);
                        break;
                }
            }
        });
        //最后一步很重要的
        return builder.create();
    }
}

接收方
package com.example.eventbus;

import androidx.appcompat.app.AppCompatActivity;
import androidx.localbroadcastmanager.content.LocalBroadcastManager;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;

public class MainActivity extends AppCompatActivity {

    private Button but;
    private ImageView iv;
    private LocalBroadcastManager manager;
    //广播携带的内容的key
    public static final String STATUS = "status";
    //静态常量-->广播标签
    public static final String HANDLE_EVENT_ACTION = "Handle_event_Action";
    private final IntentFilter filter = new IntentFilter(HANDLE_EVENT_ACTION);//过滤器在这就是一个标记,代表哪一个广播

    //广播接收器
    private final BroadcastReceiver mReceive = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            //接收后的业务,先达到广播的Action
            String action = intent.getAction();
            //判断Action标签是不是我们的这个广播
            if (HANDLE_EVENT_ACTION.equals(action)) {
                //拿到发过来的广播内容的key
                boolean status = intent.getBooleanExtra(STATUS, false);
                if (status) {
                    iv.setImageResource(R.drawable.ic_happy);
                }else {
                    iv.setImageResource(R.drawable.ic_sad);
                }
            }

        }
    };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        setTitle("subscriber");
        but = findViewById(R.id.button);
        iv= findViewById(R.id.imageView);
        initEvent();
    }

    private void initEvent() {
        but.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //弹出Dialog
                PublishDialogFragment fragment = new PublishDialogFragment();
                fragment.show(getSupportFragmentManager(),"Publish");
            }
        });
    }


    @Override
    protected void onStart() {
        super.onStart();
        //注册广播
        manager = LocalBroadcastManager.getInstance(this);
        manager.registerReceiver(mReceive,filter);
    }


    @Override
    protected void onDestroy() {
        super.onDestroy();
        manager.unregisterReceiver(mReceive);
    }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/970202.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号