首页 > 其他分享 >Activity之间数据交流一(startActivityForResult , onActivityResult , setResult 的用法)

Activity之间数据交流一(startActivityForResult , onActivityResult , setResult 的用法)

时间:2023-08-03 17:34:07浏览次数:30  
标签:button Activity Intent import startActivityForResult setResult intent android


主Activity)上能连接往许多不同子功能模块(子Activity上去),当子模块的事情做完之后就回到主界面,或许还同时返回一些子模块完成的数据交给主Activity处理。这样的数据交流就要用到 主Activity 回调函数onActivityResult()。



一些方法:



 



Activity中:



<1>主 Activity里面传递一个Intent对象,给即将打开的子 Activity,并用requestCode区分打开哪个 子 Activity



startActivityForResult(IntentrequestCode);

第一个参数Intent intent:  一个Intent对象


         第二个参数         int requestCode:>= 0,当         主Activity结束时         requestCode将归还在onActivityResult()中。以便确定返回的数据是从哪个Activity中返回


 



<2> Activity 里重写这个方法,接收 Activity 收传入的 Intent的对象, Activity既可以通过switch/ case语句用 requestCode Activity, 也可以通过resultCode 来区分



onActivityResult(int requestCode, int resultCode, Intent data)

int requestCode: 这个整数requestCode提供给onActivityResult,是以便确认返回的数据是从哪个Activity返回的。这个requestCode            


                                   和startActivityForResult中的requestCode相对应。       

int resultCode:  由子Activity通过其setResult()方法返回。
 


Intent data

 



Activity中:



<3> Activity 调用这个方法把数据返回到 Activity ,同时也返回区分自己的resultCode



setResult(int resultCode, Intent data)

int resultCode: 当子Activity结束时resultCode将归还在主Activity的onActivityResult()中,一般为RESULT_CANCELED , RESULT_OK

Intent data:    一个Intent对象,返回给父Activity的数据。

 



 



1 --》飞往火星  

 

2--》返回地球

3--》从地球飞往月球

 

4---》返回地球

 

 

本实例一共有三个Activity。点击飞往火星跳转到otherActivity,把地球带给火星的消息显示在otherActivity中。点击返回地球时把火星带给地球的消息传到主Activity.

同理:

点击飞往月球跳转到thirdActivity,把地球带给月球的消息显示在thirdActivity中。点击返回地球时把月球带给地球的消息传到主Activity.

 

具体实现:

主Activity:

 

package        xiaosi.onActivityResult;


 


import        android.app.Activity;


import        android.content.Intent;


import        android.os.Bundle;


import        android.view.View;


import        android.view.View.OnClickListener;


import        android.widget.Button;


import        android.widget.TextView;


 


public        class        OnActivityResultActivity        extends        Activity


{


              private        Button                      button      =        null       ;


              private        Button                      button1     =        null       ;


              private        TextView              text  =        null       ;


              private        static        final        int             Mars  = 0;


              private        static        final        int             Moon  = 1;


 


              @       Override


              public        void        onCreate(Bundle savedInstanceState)


      {


                    super       .onCreate(savedInstanceState);


            setContentView(R.layout.main);


            text = (TextView) findViewById(R.id.text);


            button = (Button) findViewById(R.id.button);


            button.setOnClickListener(        new        OnClickListener() {


                          @       Override


                          public        void        onClick(View v)


                  {


                        Intent intent =        new        Intent(OnActivityResultActivity.       this        , otherActivity.       class       );


                        String content =        "地球来的消息:你好,我是来自地球上的小老鼠。我好想去你们的火星呀"        ;


                        intent.putExtra(        "FromEarth"       , content);


                        startActivityForResult(intent, Mars);


                  }


            });


            button1 = (Button) findViewById(R.id.button1);


            button1.setOnClickListener(        new        OnClickListener() {


                          @       Override


                          public        void        onClick(View v)


                  {


                        Intent intent =        new        Intent(OnActivityResultActivity.       this        , thirdActivity.       class       );


                        String content =        "地球来的消息:你好,我是来自地球上的小老鼠。我好想去你们月球"        ;


                        intent.putExtra(        "FromEarth"       , content);


                        startActivityForResult(intent, Moon);


                  }


            });


      }


 


              @       Override  


              protected        void        onActivityResult(       int        requestCode,        int        resultCode, Intent data)//重写       onActivityResult方法


      {


                    switch        (requestCode)


            {


                    case        Mars:


                  Bundle MarsBuddle = data.getExtras();


                  String MarsMessage = MarsBuddle.getString(        "FromMars"       );


                  text.setText(MarsMessage);


                          break       ;


                    case        Moon:


                  Bundle MoonBuddle = data.getExtras();


                  String MoonMessage = MoonBuddle.getString(        "FromMoon"       );


                  text.setText(MoonMessage);


                          break       ;


            }


      }


}

 



otherActivity:

 

package        xiaosi.onActivityResult;


 


import        android.app.Activity;


import        android.content.Intent;


import        android.os.Bundle;


import        android.view.View;


import        android.widget.Button;


import        android.widget.TextView;


 


public        class        otherActivity        extends        Activity


{


              private        Button    button      =        null       ;


 


              @       Override


              public        void        onCreate(Bundle savedInstanceState)


      {


                    super       .onCreate(savedInstanceState);


            setContentView(R.layout.other);


            Intent EarthIntent = getIntent();


            String EarthMessage = EarthIntent.getStringExtra(       "FromEarth"        );


            button = (Button) findViewById(R.id.button);


            button.setOnClickListener(        new        View.OnClickListener() {


                          @       Override


                          public        void        onClick(View v)


                  {


                        Intent intent =        new        Intent(otherActivity.       this       , OnActivityResultActivity.       class        );


                        String passString =        "火星来的消息:Hello,我是火星的Jack,非常高兴你能来火星"        ;


                        intent.putExtra(        "FromMars"       , passString);


                        setResult(RESULT_OK, intent);


                        finish();


                  }


            });


            TextView textView = (TextView) findViewById(R.id.othertext);


            textView.setText(EarthMessage);


      }


}

 



thirdActivity:

 

package        xiaosi.onActivityResult;


 


import        android.app.Activity;


import        android.content.Intent;


import        android.os.Bundle;


import        android.view.View;


import        android.widget.Button;


import        android.widget.TextView;


 


public        class        thirdActivity        extends        Activity


{


              private        Button    button      =        null       ;


 


              @       Override


              public        void        onCreate(Bundle savedInstanceState)


      {


                    super       .onCreate(savedInstanceState);


            setContentView(R.layout.third);


            Intent EarthIntent = getIntent();


            String EarthMessage = EarthIntent.getStringExtra(       "FromEarth"        );


            button = (Button) findViewById(R.id.button);


            button.setOnClickListener(        new        View.OnClickListener() {


                          @       Override


                          public        void        onClick(View v)


                  {


                        Intent intent =        new        Intent(thirdActivity.       this       , OnActivityResultActivity.       class        );


                        String passString =        "月球来的消息:Hello,我是月球的Lucy,非常欢迎你来月球"        ;


                        intent.putExtra(        "FromMoon"       , passString);


                        setResult(RESULT_OK, intent);


                        finish();


                  }


            });


            TextView textView = (TextView) findViewById(R.id.thirdtext);


            textView.setText(EarthMessage);


      }


}


 

标签:button,Activity,Intent,import,startActivityForResult,setResult,intent,android
From: https://blog.51cto.com/u_4387387/6951227

相关文章

  • 关于3dtiles Interactivity中的zoom方法精简写法
    原版本涉及到坐标系变化和矩阵变换,在对原版的思路掌握后,特写一个精简版,帮助大家理解。functionzoom(movement,feature){constlongitude=Cesium.Math.toRadians(feature.getProperty("Longitude"));constlatitude=Cesium.Math.toRadians(feature.getProperty("Lati......
  • 拼多多APP商品详情接口获取activity_id值(拼多多activity_id接口)
    拼多多APP商品详情接口获取activity_id值(拼多多activity_id接口)代码对接如下:1.公共参数名称类型必须描述keyString是调用key(必须以GET方式拼接在URL中secretString是调用密钥api_nameString是API接口名称(包括在请求地址中)[item_search,item_get,item_search_shop等]cacheString否[......
  • android中使用startActivityForRes…
    网上找的一个通俗易懂,放在这以后好查阅假设:我这里有两个Activity:A和B,从A中向B中传递数据的时候采用的是Bundle封装数据,然后从A中跳转到B中,当B有需求将数据封装起来回传给A并跳转回A。那么A中接收数据时还要先判断Bundle是否为空,因为第一次访问A的时候(即B还没有回传的时候),Bundle......
  • android隐式启动Activity的例子
    android隐式启动Activity的例子【原创】android2.2测试通过android隐匿启动Activity的例子,同样适用于Service,BroadcastReceiver<activityandroid:name=".MyActivityTwo"android:label="ThisMyActivityTwo"><!--这样进行匹配:Intentintent=newIntent(Intent.ACT......
  • Activity及其生命周期
    Activity是Android用户界面的基础组件,它一般存放在任务栈(Task)中, 所以Activity是以栈的形式存放的,也就遵循先进后出的原则,也不支持重新排序。如果要改变Activtiy的顺序,只能根据压栈和出栈的操作来改变。当启动一个Application时,系统会默认创建一个对应的Task,用来存放......
  • Android 10 activity启动流程
    Android10Activity启动流程1.概述在Android开发中,Activity是用户与应用交互的主要界面,了解Activity启动的流程对于开发者来说非常重要。本文将介绍Android10中Activity的启动流程,并提供相应的代码示例。2.Activity启动流程概览下表展示了Android10中Activity启动的主要步......
  • DLMS Activity Calendar CIMA / SIERRA
    www.daq-iot.com [email protected]__________________________________________________________1.1 ActivityCalendarTheactivitycalendarclassistypicallyusedtohandledifferenttarifficationstructures.Itisadefinitionofscheduledactionsinsi......
  • Android四种Activity的加载模式
    建议首先阅读下面两篇文章,这样才可以更好的理解Activity的加载模式:Android的进程,线程模型其中对“Android的单线程模型”的描述,明白Activity的一些注意事项。AndroidApplicationTaskActivities的关系尤其要明白Task是啥。 一个Activty的生命周期Activty的生命周期的也......
  • Android 开发之Activity的启动模式-SingleTop
    接下来,介绍下Activity的另一种启动模式-栈顶复用模式(SingleTop)SingleTopsingleTop模式,它的表现几乎和standard模式一模一样,一个singleTopActivity的实例可以无限多,唯一的区别是如果在栈顶已经有一个相同类型的Activity实例,Intent不会再创建一个Activity,而是通过onNewIntent()被......
  • 事件分发三连问:事件是如何从屏幕点击最终到达 Activity 的?CANCEL 事件什么时候会触发?
    一、题面试中提到安卓的事件分发,我们一般都能说到从Activity->Window->DecorView->ViewGroup->View的dispatchTouchEvent流程,这个是最基本的需要掌握的,由此能深入引出一些什么知识点呢?事件是如何从屏幕点击最终到达Activity的?CANCEL事件什么时候会触发?如何解决滑动......