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

为什么 我的广播发送之后,在另一个类里面没有接收到呢?
下面是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的文字 可以显示,就是在登录后,发送了广播 ,这里没有接收到。怎么回事呢?

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


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

以上可以解决你的问题

有注册接收这个ACTION_LOGIN_SUCCESS吗