`
que2010
  • 浏览: 73623 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Activity的启动与通信

阅读更多

Activity是Android组件中最基本也是最常见的组件,一般情况下一个Activity就是对应一个单独的屏幕。

注:一下代码中父Activity用parent表示,子Activity用child表示(子Activity对应的Java文件为child.java)。

 

 

一.启动Activity

    要启动一个新的Activity,有以下三个步骤(在父Activity中执行

    1.新建一个Intent(有两种方法)

       方法①:

Intent intent = new Intent();
intent.setClass(parent.this, child.class); 

       方法②:

Intent intent = new Intent(parent.this, child.class)

 

    2.启动Activity(有两种方法)

       方法①:

startActivity(intent);

       方法②:

startActivityForResult(intent, 0);
//当第2个参数大于等于时,将会在子Activity关闭时调用父Activity的onActivityResult()函数

       以上两个方法的差异在于可以在方法②启动的Activity关闭时,回调数据给启动它的父Activity,进而实现Activity之间的通信。(稍后将会讲述)

 

    3.在AndroidManifest.xml文件中注册Activity

       在AndroidManifest.xml文件下的“<application></application>”标签之间填入一个新的<activity>标签,例:

<activity
            android:name=".child" >
</activity>

       其中,<activity>标签里可以加入“android:them”属性来设置该Activity的样式。

 

 

二.Activity之间的通信

    Activity之间有两种通信方式

    方式①:父Activity向子Activity传递信息

//在父Activity创建子Activity时执行
Intent intent = new Intent(parent.this, child.class);
Bundle bundle = new Bundle();
bundle.putString("msg", msg);    //msg为要传递的信息(String类型)
intent.putExtras(bundle);
startActivity(intent);
//在子Activity中获取数据
String msg = this.getIntent().getExtras().getString("msg");

 

    方式②:子Activity关闭后,要回调数据给父Activity

//在父Activity创建子Activity时执行
Intent intent = new Intent(parent.this, child.class);
Bundle bundle = new Bundle();
bundle.putString("msg", msg);    //msg为要传递的信息(String类型)
intent.putExtras(bundle);
startActivityForResult(intent, 0);
//当第2个参数大于等于时,将会在子Activity关闭时调用父Activity的onActivityResult()函数
//在子Activity关闭时
Intent intent = getIntent();
Bundle bundle = new Bundle();
bundle.putString("msg",msg);    //msg为要传递的信息(String类型)
intent.putExtras(bundle);
setResult(RESULT_OK,intent);
finish();
//在父Activity中加入onActivityResult函数,以接收回调的信息
@Override
 protected void onActivityResult(int requestCode, int resultCode, Intent data_intent){
    super.onActivityResult(requestCode, resultCode, data_intent);
     if(resultCode == RESULT_CANCELED)
            setTitle("cancel");
     else if (resultCode == RESULT_OK){
            Bundle bundle = data_intent.getExtras();
            if(bundle != null){
                //获取子Activity传送的数据
           String msg = bundle.getString("msg");              
            }
       }
}

 

0
0
分享到:
评论

相关推荐

    启动服务并与activity通信

    本文将详细讨论如何启动Service以及Activity与Service之间的通信机制。 首先,我们来看启动Service的两种主要方式: 1. **显式启动(Explicit Start)**: 显式启动Service时,我们需要明确指定Service的类名。...

    Fragment与Activity之间通信实例

    Fragment与Activity之间的通信是Android开发中常见的需求,特别是在创建复杂、动态布局时。本实例将深入探讨这一主题,讲解如何在Fragment和Activity之间有效地传递数据和执行操作。 首先,让我们了解Fragment和...

    Activity与Service之间通信

    Service的启动,Activity与Service之间数据传递,Binder利用bindService实现Service传递数据给Activity,Activity的成员Broadcast实现Service传递数据给Activity

    service与activity之间的通信

    1. startService(): 当Activity启动Service时,可以通过Intent传递数据。Service在onStartCommand()方法中接收这些数据,处理完任务后通过BroadcastReceiver或者返回结果到调用startService()的地方。 2. ...

    Android Hook Activity 启动劫持

    在Android Hook Activity启动劫持中,我们首先需要找到AMS的Binder接口,因为系统服务与应用之间的通信是通过Binder机制实现的。然后,我们创建一个动态代理,这个代理类会实现AMS的Binder接口,并设置我们的...

    Fragment的介绍,以及Fragment与Activity之间的通信

    理解Fragment及其与Activity之间的通信对于开发高效且灵活的Android应用至关重要。 首先,Fragment的生命周期与Activity紧密关联。Fragment有自己的onCreate(), onCreateView(), onStart(), onResume()等方法,这...

    tabhost的子activity跟activity通信

    然而,在实际应用中,我们可能会遇到TabHost的子Activity与主Activity之间通信的问题,特别是在处理回调事件如OnActivityResult()时。本文将详细探讨这个问题,并提供解决方案。 首先,理解TabHost的工作原理是关键...

    android多个activity和一个service通信

    在实际项目中,常常需要多个Activity与一个Service进行通信,比如本例中提到的“service在后台下载”场景。这种通信机制对于实现应用的流畅性和功能完整性至关重要。 首先,我们来看如何创建和启动一个Service。...

    Fragemt与Activity之间的通信 双Fragment通信

    本篇将详细探讨Fragment与Fragment以及双Fragment之间的通信机制。 首先,了解Fragment的基本概念:Fragment是Android SDK中的一个类,可以视为一个小型的Activity,但通常在更大的视图上下文中运行,如在一个...

    android_不同Activity之间的通信方式

    在Android开发中,Activity间的通信是非常关键的一环,因为它允许应用程序的不同部分相互交互,实现功能的联动。本文将深入探讨两种常见的Activity间通信方式:Intent和SharedPreferences。 首先,Intent是Android...

    activity之间的通信

    如果Service需要与Activity通信,可以使用Binder机制,或者当涉及到跨进程通信时,可以借助AIDL(Android Interface Definition Language)定义接口。 九、生命周期管理 在进行Activity通信时,了解每个Activity的...

    Activity启动流程图

    Activity启动流程是Android系统中一个非常核心的部分,它是应用程序组件之一,负责创建和管理应用的用户界面。当我们想要启动一个新的Activity时,背后有一系列复杂的交互过程,涉及多个组件和类。本文将通过代码...

    Service与Activity的通信

    本示例探讨的是如何实现`Service`与`Activity`之间的有效通信,确保`Service`能及时更新`Activity`的用户界面。以下是关于这个主题的详细讲解。 1. **Service**: `Service`是Android中的一个系统服务,它可以在后台...

    Android Activity 通信简单示例

    总结来说,Android的Activity通信涉及Intent的使用、数据传递、结果回调、启动模式、生命周期管理以及导航与返回栈的处理。理解并熟练掌握这些知识点对于开发高效、稳定且用户体验良好的Android应用至关重要。通过...

    带返回值的Activity启动

    综上所述,`startActivityForResult`是Android中进行Activity间通信的重要手段,它使得子Activity能够向父Activity传递数据和反馈,增强了应用的交互性和灵活性。在实际开发中,熟练掌握这一功能,对于构建功能丰富...

    Android利用Intent启动和关闭Activity

    【Android Intent 启动和关闭Activity】 在Android应用程序开发中,Intent是连接各个组件(如Activity、Service等)的关键桥梁,主要用于启动和关闭Activity。Intent不仅能够启动一个新的Activity,还能在Activity...

    Android中Activity之间通信

    Intent在Android中扮演着消息传递的角色,它允许一个Activity启动另一个Activity并传递数据。Intent有两个主要组成部分:Action和Data。Action定义了要执行的操作(如ACTION_VIEW或ACTION_EDIT),而Data则包含了...

    不同应用的activity进程间通信demo

    Intent是Android中最常见的组件间通信方式,它能启动一个新的Activity或者Service。在不同应用之间使用Intent进行通信时,我们需要设置Intent的FLAG_ACTIVITY_NEW_TASK标志,并指定待启动应用的ComponentName。例如...

    service中启动activity

    总结起来,Service启动Activity是通过Intent进行的,这涉及到Android组件间通信的核心机制。同时,ContentProvider作为Android四大组件之一,可以辅助进行数据共享和组件间通信。在实际开发中,理解这些概念并正确...

Global site tag (gtag.js) - Google Analytics