安卓开发之Activity间传输数据

Posted ggzx666

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了安卓开发之Activity间传输数据相关的知识,希望对你有一定的参考价值。

Activity之间传输数据

本文将介绍activity之间传输数据的几种方式
温馨提示:本文附加的代码块都是放置在button监听事件中的

对于activity之间传输数据需要使用intent

传输方:

			Intent intent=new Intent(MainActivity.this,MainActivity2.class);
            intent.putExtra("ggzx","ggzx");
            intent.putExtra("ggzx2",100);
            intent.putExtra("ggzx2",100);
            startActivity(intent);

接收方:

            String ggzx=getIntent().getStringExtra("ggzx");
            textView.setText(ggzx);
            int ggzx2=getIntent().getIntExtra("ggzx2",0);
            textView2.setText(ggzx2+"");

这里两个代码块我都是放在两个按钮的onClick中,在第一个界面点击即可跳转页面,第二个页面点击更新textview

这里intent还可以使用bundle来传输数据

如何用配合intent和bundle来传输数据。
传输方

Intent intent=new Intent(MainActivity.this,MainActivity2.class);
                Bundle bundle=new Bundle();//创建一个bundle
                bundle.putString("ggzx","ggzx");//往bundle存放数据
                bundle.putInt("ggzx2",100);
                intent.putExtra("bundle",bundle);//给bundle命名再放进intent
                startActivity(intent);

接收方

            Bundle bundle=getIntent().getBundleExtra("bundle");//获取bundle
            textView.setText(bundle.getString("ggzx"));
            int ggzx2=bundle.getInt("ggzx2");
            textView2.setText(ggzx2+"");

接下来还有一个场景,假如我想传输一个数据,当接收方处理完,立刻返回数据或者接收到数据返回一个特定的值,这样的场景该如何实现

第一步:与之前存放数据相同,startActivity更换成startActivityForResult(intent,999)
这里我使用999作为一个requestCode,在onActivityForResult中,需要确定请求码相同

第二步:在oncreate中

if(getIntent()!=null)
{
	setResult(RESULT_OK);//设置resultCode
}

setResult后,主活动中的onActivityResult会接受到一个resultCode,当确定resultCode和requestCode都相同后,才可以确定是由第二个活动回输的数据,可以执行特定操作

第三步

                protected void onActivityResult(int requestCode,int resultCode,@Nullable Intent data){
                    super.onActivityResult(requestCode,resultCode,data);
                    if(requestCode==999 && resultCode==RESULT_OK){
                        button.setText("收到回复");
                        //其他操作
                    }
                }

这里我们就完成了,大概解释一下过程,使用startActivityForResult时,第二个活动中接受到数据后,设置setResulet后,第一个活动可以在onActivityResult中接收到一个resultCode。
注意:该方法的第三个参数,第二个活动中甚至可以回传intent。这说明我们可以接受到传回的很多数据

使用intent的情况下
传输方/接受回输数据方:onCreate中的button的监听事件

     Intent intent=new Intent(MainActivity.this,MainActivity2.class);
     startActivityForResult(intent,999);
	onActivityResult中
super.onActivityResult(requestCode, resultCode, data);
        if (requestCode==999 && resultCode== RESULT_OK)
        {
            assert data != null;
            int ggzx=data.getIntExtra("ggzx",0);
            if (ggzx!=0)
                textView.setText(ggzx+"");
            else
                textView.setText("0");
        }

接收方:

                if (getIntent()!=null){
                    Intent intent=new Intent();
                    intent.putExtra("ggzx",100);
                    setResult(RESULT_OK,intent);//设置resultcode
                }

本文的附上的所有代码都是放在button的监听事件中,第一个界面中,点击即可将输出传递并跳转到第二个活动,在第二个界面点击即可显示数据内容或回输数据。

以上是关于安卓开发之Activity间传输数据的主要内容,如果未能解决你的问题,请参考以下文章

安卓开发之Fragment数据传输到Activity+实例分析

安卓MP3播放器开发实例之进度条和歌词更新的实现

Android 消息传递之Bundle的使用——实现object对象传输

【安卓开发】activity不能完全关闭

Android安卓开发之activity如何传值到fragment,activity与fragment传值

安卓开发,SharedPreferences,怎么在其它Activity中取数据?