broadcastreceiver-利用广播在activity之间传递数据问题

问题描述

利用广播在activity之间传递数据问题

我想利用广播在activity之间传递数据(不是直接用intent传递bundle),代码如下:
MainActivity:

public class MainActivity extends Activity{
private Button mButton;

@override
protected void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);
    mButton = (Button)findViewById(R.id.button);

    mButton.setOnClickListenner(new OnClickListener(){
        @override
        public void onClick(View v){
            startActivity(new Intent(MainActivity.this, SecondActivity.class));

            Intent broadIntent = new Intent("com.example.broadcasttest");
            broadIntent.putExtra("position", 3);

            sendBroadcast(broadIntent);
        }
    });
}

}

SecondActivity:

public class SecondActivity extends Activity{
private int position;

@override
protected void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_second);

    IntenFilter filter = new IntenFilter("com.example.broadcasttest");
    registerReceiver(receiver, filter);
}

BroadcastReceiver receiver = new BroadcastReceiver(){
    @override
    public void OnReceive(Context context, Intent intent){
        position = intent.getIntExtra("position", 0);
        Log.e("","position-->"+position);
    }
}

@override
protected void onDestroy(){
    super.OnDestroy();
    unRegisterReceiver(receiver);
}

}
广播接收不到,请问是什么问题,谢谢。

解决方案

 startActivity(new Intent(MainActivity.this, SecondActivity.class));//SecondActivity还没初始化完成,这是异步过程,不是同步,执行下面语句的时候还没初始化完成

            Intent broadIntent = new Intent("com.example.broadcasttest");
            broadIntent.putExtra("position", 3);

            sendBroadcast(broadIntent);

解决方案二:

        Intent broadIntent = new Intent("com.example.broadcasttest");
        broadIntent.putExtra("position", 3);

        sendBroadcast(broadIntent);

                    startActivity(new Intent(MainActivity.this, SecondActivity.class));
                    这样子改就好了

解决方案三:

改过了,将startActivity(new Intent(MainActivity.this, SecondActivity.class));放在后面还是收不到。。

解决方案四:

最好还是打日志看看,广播注册成功了没? 有没有发送广播,有没有接收到广播,到底是广播出了问题还是你的数据没有处理好日志打的详细一点就能看出来的

时间: 2024-08-28 10:38:50

broadcastreceiver-利用广播在activity之间传递数据问题的相关文章

Parcelable和Serializable(二)--利用Parcelable在Activity之间传递自定义对象

MainActivity如下: package cc.testparcelable; import java.net.HttpURLConnection; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.app.Activity; import android.cont

在不同Activity之间传递数据的四种常用方法_Android

在Android中传递数据的方法非常多,本次介绍4中比较常用的数据传递方法: 1.通过Intent传递数据 2.通过静态变量(static)传递数据 3.通过剪贴板(Clipboard)传递数据 4.通过全局对象传递数据 在TransmitDataActivity.java中 package mobile.android.transmit.data; public class TransmitDataActivity extends Activity { @Override protected

关于Android Activity之间传递数据的6种方式

使用Inten的putExtra传递 第一个Activity中 //创建意图对象 Intent intent = new Intent(this,TwoActivity.class); //设置传递键值对 intent.putExtra("data",str); //激活意图 startActivity(intent); 第二个Activity中 // 获取意图对象 Intent intent = getIntent(); //获取传递的值 String str = intent.ge

在不同Activity之间传递数据的四种常用方法

在Android中传递数据的方法非常多,本次介绍4中比较常用的数据传递方法: 1.通过Intent传递数据 2.通过静态变量(static)传递数据 3.通过剪贴板(Clipboard)传递数据 4.通过全局对象传递数据 在TransmitDataActivity.java中 package mobile.android.transmit.data; public class TransmitDataActivity extends Activity { @Override protected

Android 学习之路一:Activity之间传递数据的四种方式

传递数据 新建 Activity 在项目中右键,选择 New,继续选择中下方的 Activity,最后是 Blank Activity. 此时 Android Studio 会为我们自动添加一个对应的布局文件,为布局文件中的 TextView 添加 ID,以便后续使用. 用Intent 发送数据 在主布局文件中新建一个 Button 控件,并在主类中定义它,然后为它设置 Click 的监听事件. Button button; @Override protected void onCreate(B

Android 学习之路 1:如何在Activity之间传递数据

传递数据 新建 Activity 在项目中右键,选择 New,继续选择中下方的 Activity,最后是 Blank Activity. 此时 Android Studio 会为我们自动添加一个对应的布局文件,为布局文件中的 TextView 添加 ID,以便后续使用. 用Intent 发送数据 在主布局文件中新建一个 Button 控件,并在主类中定义它,然后为它设置 Click 的监听事件. Button button; @Override protected void onCreate(B

Activity之间传递大数据问题

Android开发人员都知道,Intent适用于在不同的Activity之间传递数据,包括参数.字符串.以及序列化的对象等.但是笔者所做的项目用到了使用Intent 传递Bitmap图片对象,图片的数据量相对来说是比较大的,那么intent能否胜任传递图片的任务呢? 首先很明显bitmap实现了Android中的Parcelable接口,可以序列化.因此理所当然能够通过intent传递,然而图片的大小有没有限制呢? Bitmap extends Objectimplements Parcelab

大叔也说Xamarin~Android篇~Activity之间传递数组

原文:大叔也说Xamarin~Android篇~Activity之间传递数组 我们在开发应用程序时,不可能只使用一个Layout或者一个Activity,比如你个管理系统,要求用户先登陆然后再使用,这时你至少要有两个activity吧,先登陆一个,然后成功后需要跳到别一个Activity,这就遇到了多个Activity之间传递数据的问题,这也是今天我们要说的! 先聊聊Activity 首先一个Activity都会去继承Activity类,这个类里有方法已经替我们实现,我们可以把activity看

BroadcastReceiver广播接收者(三)——利用广播在应用程序之间传递数据

 TestBroadcastA应用如下 MainActivity如下: package cc.testbroadcasta; import android.os.Bundle; import android.app.Activity; /** * Demo描述: * 利用广播在应用程序之间传递数据 * * TestBroadcastA应用中注册一个广播接收者. * TestBroadcastB应用中发出一个广播 */ public class MainActivity extends Act