大海话语 2022-01-08 17:46 采纳率: 87.6%
浏览 32
已结题

广播 接收不到,其它类,则可以

为什么 我的广播发送之后,在另一个类里面没有接收到呢?
下面是login发送的广播

  public static final String ACTION_LOGIN_SUCCESS = "ACTION_LOGIN_SUCCESS";

 Toast.makeText(LoginAc.this, "登录成功!", Toast.LENGTH_SHORT).show();
                        //广播发送用户名
                        Intent intent = new Intent();
                        intent.setAction(ACTION_LOGIN_SUCCESS);

                        sendBroadcast(intent);

                        // 如果登录成功
                        setResult(Activity.RESULT_OK);
                        finish();

这个finish()就是会返回到上一层,上一层,就是没有接收到广播
这是广播接收者类

//广播接收者
    private BroadcastReceiver receiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            //如果 login成功
            if (intent != null || "".equals(intent)) {
                String loginSuccess = intent.getStringExtra(LoginAc.ACTION_LOGIN_SUCCESS);
                if(loginSuccess != null){
                    btn_exit_app = (TextView) findViewById(R.id.btn_exit_app);
                    btn_exit_app.setText("退出登录");
                    btn_exit_app.setTextColor(getResources().getColor(R.color.color_white));
                    btn_exit_app.setWidth(500);
                }
            }

        }
    };

从外层进入到广播接收者类,是有经过 onCreate()方法的,有刷新,那 那个想要设置的TextView的文字 可以显示,就是在登录后,发送了广播 ,这里没有接收到。怎么回事呢?

  • 写回答

2条回答 默认 最新

  • 普通网友 2022-01-08 23:46
    关注

    你 的误区在于对于广播的理解;
    广播有两种注册方式,一种是静态,一种是动态;
    我看你的代码是动态注册 ,也就是 在页面中注册的;


    按你的情况来看,你有两种选择方式
    1、用广播,但广播的注册 ,你需要留意,动态的话,需要 在页面中的OnResume中注册好;
    不然就会收不到;
    2、用RESULT_OK,你A页面打开login时,使用希望返回形式的Intent,在login页面返回时,加上result——ok,
    顺带回参数即可。

    以上可以解决你的问题

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 1月17日
  • 已采纳回答 1月9日
  • 创建了问题 1月8日

悬赏问题

  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么