zoukankan      html  css  js  c++  java
  • 第35讲 Activity入门和跳转

    35Activity入门和跳转

    1.Activity

    Activity是用户接口程序。在Android当中,Activity提供可视化的用户界面,一个Android应用通常由多个activity组成。多个Activity组成了Activity(Stack),当前活动的Activity处于栈顶。Activity有自己的生命周期,由android系统来控制。

    在Activity中包含一个window对象,在Window对象中通常包含一个布局容器对象(如一个LinearLayout布局对象),在布局对象中包含各种UI组件。Android的activity是具有严格层次结构的,类似于数型的对象结构。

    一、activity生命周期


    由图可知:

      在一个Activity正常启动过程中,这些方法调用的顺序是onCreate -> onStart -> onResume;在Activity被kill掉的时候方法顺序是onPause-> onStop -> onDestroy,此为一个完整的Lifecycle。那么对于中断处理(比如电话来了),则是onPause -> onStop,恢复时onStart -> onResume;如果当前应用程序的是一个Theme为Translucent(半透明)或者Dialog 的Activity那么中断就是onPause ,恢复的时候onResume。

    二、自己配置Activity

    1、自定义Activity类时,都必须继承Activity类;

    2、重写onCreate (Bundle savedInstanceState)方法,该方法在Activity第一次运行时,Activity框架会调用这个方法;

    3、每一个Activity都需要在配置文件AndroidManifest.xml中进行配置。在AndroidManifest.xml当中的Application节点下,配置Activity信息。一般要求配置的是android:name和android:label。其中android:name="包名.类名"  路径可以写全包名,也可以写 android:name=".MyActivity"。 android:label="程序将展示在activity页面上的名称"。而<intent-filter></intent-filter>是指默认首先启动的Activity。

    <activity

    android:name="com.example.test_activity.MainActivity"

    android:label="@string/app_name" >

    <intent-filter>

    <action android:name="android.intent.action.MAIN" />

    <categoryandroid:name="android.intent.category.LAUNCHER" />

    </intent-filter>

    </activity>

     4、为Activity添加必要的控件,如何添加呢?在layout文件夹中创建一个声明一个xml格式的布局文件myactivity.xml,然后再在这个布局文件中对Activity的布局以及不同的控件进行设置。将其渲染到MyActivity中 setContentView(R.layout.myactivity);

    5、再在第一步定义的Activity子类中通过findViewById(R中对应的id类中控件的id)方法来获取布局文件中声明的控件,前提是布局文件中必须声明这些控件的id.

    二、自动配置Activity

    直接创建项目Activity

    2.Intent

    Android中提供了Intent机制来协助应用间的交互与通讯,Intent负责对应用中一次操作的动作、动作涉及数据、附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组件,将Intent传递给调用的组件,并完成组件的调用。Intent不仅可用于应用程序之间,也可用于应用程序内部的Activity/Service之间的交互。因此,Intent在这里起着一个媒体中介的作用,专门提供组件互相调用的相关信息,实现调用者与被调用者之间的解耦。

    #通过Context.startActivity()orActivity.startActivityForResult()启动一个Activity;

    #通过Context.startService()启动一个服务,或者通过Context.bindService()和后台服务交互;

    #通过广播方法(比如Context.sendBroadcast(),Context.sendOrderedBroadcast(),Context.sendStickyBroadcast())发给broadcast receivers。

      

    三、Activity之间的跳转

    实际应用中,经常需要从一个activity跳转到另一个activity,activity之间的跳转需要通过Intent对象实现。它象征了请求,其中包含了请求执行的动作,携带的数据等等信息。

    使用startActivity(Intent intent)来执行另外一个Activity。

    public void test(View view){

    Intent intent=new Intent();                                         //生成一个Intent对象

    //由该Activity跳转到SecondActivity ,其中第一个参数是启动Intent的Activity,第二个参数是被启动的Activity。

    intent.setClass(this,SecondActivity.class);  

    this.startActivity(intent);                                             //通过Intent对象启动另外一个Activity

    }

    四、Activity之间信息传递

    前一个Activity传递信息到下一个Activity 。Activity之间可以传递数据,而且Activity不仅仅必须在同一个应用程序内,也可以在不同的应用程序之间。

    首先,在前一个Activity中将需要传递的信息通过intent.putExtra ("key", "value")传递;

    public void test(View view) {

    EditText editText=(EditText) findViewById(R.id.editText1);

    String uname=editText.getText().toString();

    Intent intent=new Intent();                                //生成一个Intent对象

    intent.setClass(this, SecondActivity.class); //设置Intent对象要启动的Activity

    intent.putExtra("uname", uname);                 //在Intent对象当中添加一个键值对

    this.startActivity(intent);                                    //通过Intent对象启动另外一个Activity

    }

    然后,在下一个接收端Activity接收,利用getIntent()得到从另外一个Activity中传递过来的Intent对象,利用intent.getStringExtra ("key")来取得值;

    Intent intent=this.getIntent();

    String uname=intent.getStringExtra("uname");

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

    textView.setText(uname);

    五、通过layout的切换实现类似Activity切换的效果

    this.setContentView(R.layout.activity_second);

    从这个layout切换到activity_second.xml

  • 相关阅读:
    搞不明白,乱七八糟一团浆糊
    不能让外界打乱你的生活节奏
    被人的认知刷新了
    C#识别图片上的数字
    C# @字符用法
    SQL语句优化(转摘)
    C# 根据年月获得此月第一天和最后一天,并计算工作日
    jQuery渐隐渐出的文字提示
    JQuery 拖动层
    Windows SQL Server 2012 R2 安装Intel I217-V/I218-V网卡驱动(转)
  • 原文地址:https://www.cnblogs.com/anyuan9/p/6171587.html
Copyright © 2011-2022 走看看