精华内容
下载资源
问答
  • 大侠,如果我想在activity A中启动activity B,然后activity A还能向B发送状态信息,B再根据A发送来的状态决定自身的变化,比如A发送退出命令,B接收之后就finish,这样的想法能实现吗? 之所有有这样的需求是...
    大侠,如果我想在activity A中启动activity B,然后activity A还能向B发送状态信息,B再根据A发送来的状态决定自身的变化,比如A发送退出命令,B接收之后就finish,这样的想法能实现吗?
    之所有有这样的需求是因为,比如在登录的时候,考虑到网络延迟的关系,在用户点按钮时,我想要出现一个loading的界面,覆盖在登录界面上面,然后当服务端返回成功,loading的那个界面就变成一个对号√的图片,失败就变成一个叉×的图片,并且短暂停留之后消失,这样应该怎么样实现呢?
    展开全文
  • Activity是设置界面,程序要实现从主Activity有三个按钮,分别可进入三个不同的子Activity,这三个子Activity里都有一个文本输入框,当从子Activity返回时,希望得到回传回来的值。 问题就是,如果是一个页面还...
  •  Intent可以理解为不同组件通信的媒介或者信使。 Intent可以启动一个Activity,也可以启动一个Service,还可以发起一个广播Broadcast。 组件名称 方法名称 Activity startActivity...

    1.Intent和Bundle

     Intent可以理解为不同组件通信的媒介或者信使

    Intent可以启动一个Activity,也可以启动一个Service,还可以发起一个广播Broadcast。

    组件名称

    方法名称

    Activity

    startActivity()

    startActivityForResult()

    Service

    startService()

    bindService()

    Broadcasts

    sendBroadcast()

    sendOrderedBroadcast()

    sendStickyBroadcast()

    Intent对象由以下六个部分组成:

      Component name

      Action

      Data

      Category

      Extras

      Flags

    范例
    (1)新建一个bundle类
           Bundle mBundle = new Bundle();   

    (2)bundle类中加入数据(key -value的形式,另一个activity里面取数据的时候,就要用到key,找出对应的value)
           mBundle.putString("Data", "data from TestBundle");  
    (3)新建一个intent对象,并将该bundle加入这个intent对象
         Intent intent = new Intent();     
         intent.setClass(TestBundle.this, Target.class);    
         Bundle mBundle = new Bundle();    
         mBundle.putString("Data", "data from TestBundle");//压入数据     
         intent.putExtras(mBundle);    
         startActivity(intent);  
    (4)
         Bundle bundle = getIntent().getExtras();//得到传过来的bundle   
         String data = bundle.getString("Data");//读出数据    


    2.运用startActivityForResult()

    请求码和结果码

    请求码的作用
    startActivityForResult(Intent intent, int requestCode)的第二个参数为请求码。
    请求码的值是根据业务需要由自已设定,用于标识请求来源
    例如:一个Activity有两个按钮,点击这两个按钮都会打开同一个Activity,不管是那个按钮打开新Activity,当这个新Activity关闭后,系统都会调用前面Activity的onActivityResult(int requestCode, int resultCode, Intent data)方法。这个时候,我们就需要判断是按钮打开了Activity,我们可以这样做
    首先,在startActivityForResult时候设置请求码的数值

    button1.setOnClickListener(new View.OnClickListener(){
                public void onClick(View v) {
                    startActivityForResult (new Intent(MainActivity.this, NewActivity.class), 1);

               }

            });
    button2.setOnClickListener(new View.OnClickListener(){
                public void onClick(View v) {
                     startActivityForResult (new Intent(MainActivity.this, NewActivity.class), 2);

                }

            });

    接着,在onActivityResult中判断请求码做出不同的操作:

    @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) {
                   switch(requestCode){
                       case 1:
                       //来自按钮1的请求,作相应业务处理
                       case 2:
                       //来自按钮2的请求,作相应业务处理
                    }
              }

    结果码的作用:

    在一个Activity中,可能会使用startActivityForResult()方法打开多个不同的Activity处理不同的业务,当这些新Activity关闭后,系统都会调用前面Activity的onActivityResult(int requestCode, int resultCode, Intent data)方法。为了知道返回的数据来自于哪个新Activity,在onActivityResult()方法中可以这样做(ResultActivity和NewActivity为要打开的新Activity):

    public class ResultActivity extends Activity {
           .....
           ResultActivity.this.setResult(1, intent);
           ResultActivity.this.finish();
    }
    public class NewActivity extends Activity {
           ......
            NewActivity.this.setResult(2, intent);
            NewActivity.this.finish();
    }
    public class MainActivity extends Activity { // 在该Activity会打开ResultActivity和NewActivity
           @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) {
                   switch(resultCode){
                       case 1:
                       // ResultActivity的返回数据
                       case 2:
                        // NewActivity的返回数据
                    }
              }

    3.重载onActivityResult

    如果想在Activity中得到新打开Activity 关闭后返回的数据,需要使用系统提供的startActivityForResult(Intent intent, int requestCode)方法打开新的Activity,新的Activity 关闭后会向前面的Activity传回数据,为了得到传回的数据,必须在前面的Activity中重写onActivityResult(int requestCode, int resultCode, Intent data)方法。
    展开全文
  • 一、创建第一个Activity.java文件import android.view.View; import com.example.administrator.myapplication.R; public class Intent1Activity extends ActionBarActivity { @Override protected void ...

    一、创建第一个Activity

    .java文件

    import android.view.View;
    
    import com.example.administrator.myapplication.R;
    public class Intent1Activity extends ActionBarActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_intent1);
        }
    
        public void intent(View view)
        {
            /*
            通过类名启动
            缺点:容易暴露要启动的类名
    */
            Intent inten =new  Intent();//实例化一个intent对象
            inten.setClass(this,Intent2Activity.class);//设置调转的界面
            startActivity(inten);//启动
    
    
        }
    
    

    }

    布局文件

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:paddingBottom="@dimen/activity_vertical_margin"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin"
        tools:context="com.example.administrator.myapplication.com.intent.Intent1Activity">
    
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="启动第二个activity"
             android:onClick="intent"
            />
    
    </LinearLayout>

    二、创建第二个Activity

    第二个布局文件我们只需要对布局文件进行编码即可,做个最单的页面

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:paddingBottom="@dimen/activity_vertical_margin"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin"
        tools:context="com.example.administrator.myapplication.com.intent.Intent2Activity">
    
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="这是第二个activity"
            />
    
    </LinearLayout>
    

    展开全文
  • 之前,关于传值出了三篇文章,但是忽略了一个至关重要的内容,也是传值中很常用的一个,就是回掉传值activity的启动回掉,方法,这个传值在界面通信之间起着至关重要的作用,下面直接看代码 FirsrActivity中 Intent...

    之前,关于传值出了三篇文章,但是忽略了一个至关重要的内容,也是传值中很常用的一个,就是回掉传值activity的启动回掉,方法,这个传值在界面通信之间起着至关重要的作用,下面直接看代码

    FirsrActivity中

    Intent intent = new Intent(FirsrActivity.this,SecondActivity.class);
    startActivityForResult(intent,REQUEST_CODE);

    这样用来启动SecondActivity,startActitvityForResult中的第一个参数为启动意图,第二个参数为请求编码,

    SecondActivity中

    //跳回
    Intent intent = new Intent();
    intent.putStringArrayListExtra("cMeMber", memberList);
    setResult(RESULT_CODE,intent);
    finish();

    此处是SecondActivity中的设置回传Intent设置 即setResult,第一个参数即是回传的参数,第二个参数是intent.即可以传回多个属性放置在INTENT中,放置bundler也可以,即万物都可以传。

    然后继续是FirstActivity中的代码,

    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if(data!=null)
        {
        if (requestCode == 1)
        {
    
            t_Adress.setText(data.getStringExtra("DeatailPlace"));
        }
        else if (requestCode==2 && resultCode == 2)
        {
                OppenentName = data.getStringExtra("cOppenentName");
                OppenentID = data.getStringExtra("cOppenentID");
                m_tvShowName.setText("" + data.getStringExtra("cOppenentName"));
        }else if(requestCode == 3)
        {
            requestAddMatchBaseBean.cTeamID = data.getStringExtra("cMyTeamID");
            m_tvShowMyTeam.setText(""+data.getStringExtra("cMyTeamName"));
    
            m_tvShowMyMember.setText("已通知 1 人");
            m_tvShowMyMemberTab.setTextColor(Color.parseColor("#e8e8e8"));
            m_tvShowMyMember.setTextColor(Color.parseColor("#e8e8e8"));
        }else if(requestCode == 4)
        {
            memberlist = new ArrayList<>();
            memberlist = data.getStringArrayListExtra("cMeMber");
            m_tvShowMyMember.setText("已通知 " + memberlist.size()+" 人");
        }
        }
        super.onActivityResult(requestCode, resultCode, data);
    }
    这边是传回的值,是在OnActivityResult中,接受,并且做判断,data既是回传的intent,需要判断是否为空,不然的话容易出错

    而且需要判断,resultcode是多少,才能够接受使用

    展开全文
  • 这篇,主要写的是,fragment与fragment直接的互相传值,互相通信,fragment必须依赖于activty,而activity用来管理fragment是通过fragmentManager来管理的,所以这样一来,用来传值互相通信的方便就变得非常明了了。...
  • Fragment的使用可以让我们的应用更灵活的适配各种型号的安卓设备,但是对于Fragment和Activity之间通信,很多朋友应该比较陌生,下面我们就通过一个实例来看一看如何实现。 一、Activity->Fragment传递数据 1...
  • 在一个完整的应用之间,会存在多个Activity,这些Activity之间避免不了要进行跳转以及通信(相互至之间传递数据); Activity之间的跳转 1.跳转到下一个新的Activity Intent intent =new Intent(TestActivity.this,...
  • 安卓项目开发中经常会遇到Service和Activity之间通信的情况,Service的数据更新,通知Activity中UI更新。 Service和Activity之间的通信主要有三种: bindService(); 广播Broadcast; hander机制 一、利用hander...
  • Fragment的使用可以让我们的应用更灵活的适配各种型号的安卓设备,但是对于Fragment和Activity之间通信,很多朋友应该比较陌生,下面我们就通过一个实例来看一看如何实现。一、Activity->Fragment传递数据1.main....
  • Fragment的使用可以让我们的应用更灵活的适配各种型号的安卓设备,但是对于Fragment和Activity之间通信,很多朋友应该比较陌生,下面我们就通过一个实例来看一看如何实现。 一、Activity->Fragment传递数据 1....
  • 学习目标;Activity和Service之间通信;Activity绑定Service;Service中的处理;Activity获取Service的处理情况;任务实施;知识点小结;感谢您的学习
  • http://blog.sina.com.cn/s/blog_7e3a44200100ssln.html ... 转自安卓巴士开发者 在android应用程序开发的时候,从一个activity启动另一个activity并传递一些数据到新的activity
  • Android笔记只Activity与Fragment之间通信

    万次阅读 2018-07-04 12:49:48
    反思的结果就是,这小半年我没多少进步,无论是在RN还是安卓原生开发的知识技术方面,都没有实质上的突破,以至于没有新的值得我记录为博客的干货。 俗话说,学海无涯,不进则退。因为这大半年基本上都从事着RN的...
  • 安卓这边线程通信的话,通常情况下我用到的就是handler和广播,基本所有问题都能解决了。今天去面试,面试官问到了这个问题,结果他说这两种方式的效率太低,他们使用的是管道流,emmmmmm,表示一脸懵逼。 回来查了...
  • 安卓进程间通信

    2015-03-11 21:17:47
    由于android系统中应用程序之间不能共享内存。因此,在不同应用程序之间交互数据(跨进程通讯)就稍微麻烦一些。在android SDK中提供了4种用于跨进程通讯的方式。这4种方式正好对应于android系统中4种应用程序组件:...
  • 刚开始学习安卓的时候学过怎么跨应用启动activity和servicer,但只是会启动而已,对于他们之间通信并没有做更深入的了解。偶尔接触到一个名词叫AIDL,在网上查阅资料的时候发现他的全称为android interface ...
  • 安卓中实体类与活动之间通信

    千次阅读 2020-01-12 11:36:17
    之前,我曾经遇到一个问题,在写recyclerview的时候需要在adapter里面调用某个activity中的方法,我尝试了各种方法都没有成功。 解决: 我记得之前看过一些实战视频,里面的讲师曾说过activity就是context,所以其实...
  • 本次学习在介绍了Intent的作用之后,主要讲解怎么在Activity中使用Intent,比如:Activity的显示跳转,隐式跳转,父子Activity中传递数据等。 一、Intent简介 Intent也可称为一个在不同组件之间传递的消息,这...
  • 安卓四大组件之Activity

    千次阅读 2014-05-04 20:59:46
    Activity 是 Android 四大组件之一,它用于展示界面。 Activity 是一个应用程序组件,提供一个屏幕,用户可以用来交互为了完成某项任务。 Activity 中所有操作都与用户密切相关...Activity 之间通过 Intent 进行通信
  • app中,一个activity通常是指的一个单独的... 那么activity之间如何进行通信呢?他们是通过intent进行通信以及切换。Intent有两个重要部分(动作传递,数据传递); Ø神马是Activity? activity是四大组件,代表...
  • 由于应用程序之间不能共享内存。在不同应用程序之间交互数据(跨进程通讯),在android SDK中提供了4种用于跨...这4种方式正好对应于android系统中4种应用程序组件:Activity、Content Provider、Broadcast和Service。
  • Android组件之间通信

    千次阅读 2016-11-07 14:49:29
    我们首先梳理下一般我们在安卓中不同组件之间通信有哪些方式  (Tips:以下讨论除了文件存储和ContentProvider等,一般都是指在同一进程内通信,如果要实现跨进程的通信,还需要借助Messenger或者AIDL等技术,后续还...
  • activity之间通过inter进行通信 service(服务) 用户在后台完成用户指定的操作 service分两种 started(启动):当应用程序组件调用startService()方法启动服务时,服务处于started状态 bound(绑定):当应用程序...
  • 那么activity之间如何进行通信呢?他们是通过intent进行通信以及切换。Intent有两个重要部分(动作传递,数据传递); Ø神马是Activity?  activity是四大组件,代表者用户可操作界面,可与用户

空空如也

空空如也

1 2 3 4 5 6
收藏数 114
精华内容 45
关键字:

安卓activity之间通信