Android组件(Activity)

来源:互联网 发布:360数据恢复大师免费版 编辑:程序博客网 时间:2024/05/08 13:39
1.前言:
    前面我画过一张android学习路线图,我准备接下来按着我的路线图进行android的进阶学习,同时会把我的学习总结分享出来,希望对大家有帮助
我个人认为,学一门技术最主要的是要有全局感,明白自己要做什么?做这些需要学习什么?学这些需要怎么学?,也就是所谓的结果导向,这样
我们才能快速高效的成长。
    第二点,分享给各位初学者,成长是个过程,是量变到质变的过程,所以不必过于着急,你终会成为自己心中的自己。
    
    好了接下来我们先学习组件Activity
    
2.目录:
    1.Activity概述(是啥?)
    2.Activity的作用(我们用他干嘛?)

    3.Activity生命周期

    4.2个Activity切换的生命周期(例子)

    5.Activity使用
    6.Activity1启动Activity2(例子)
    
3. Activity概述:

             Activity是Android四大组件之一,提供给用户一个可交互的界面,承载各种View,一个APP(Aplication)有多个Activity组成

            在用户操作中这些Activity由back stack(遵循后进先出规则的栈)(暂不提)统一管理。

4. Activity的作用:

            这个问题不解说,不就是给用户一个所见即所得的界面,让用户体验更爽吗?(试想没有界面的APP是啥体验)


5.Activity生命周期(图太多,可自己百度 or google)

    

    (图片来源:点击打开链接)

      可能上面还是看不明白Activity的生命周期到底是怎么样,接下来我会在例子中体现。

6.2个Activity切换的生命周期

      1)eclipse建立android工程

       2)新建Activity1.java 和Activity2.java类并继承Activity类

            2.1 Acitvity1.java

           

package com.Andy.activitydemo;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.Toast;public class Activity1 extends Activity {//Button butt1 = null;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main1);System.out.println("Activity1->onCreate");// 绑定butt1Button butt1 = (Button) findViewById(R.id.but1);// 设置点击监听butt1.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// 启动第二个activityIntent intent=new Intent();intent.setClass(Activity1.this, Activity2.class);//Intent intent = new Intent(Activity1.this, Activity2.class);intent.putExtra("data", "hello my name is Activity1");Activity1.this.startActivity(intent);}});// 获取activity1传递的IntentIntent intent1 = getIntent();// 获取Intent中的数据String data = intent1.getStringExtra("data");// 显示数据Toast.makeText(this, data, Toast.LENGTH_LONG).show();}@Overrideprotected void onStart() {super.onStart();System.out.println("Activity1->onStart");}@Overrideprotected void onResume() {System.out.println("Activity1->onResume");super.onResume();}@Overrideprotected void onPause() {System.out.println("Activity1->onPause");super.onPause();}@Overrideprotected void onRestart() {System.out.println("Activity1->onRestart");super.onRestart();}@Overrideprotected void onStop() {System.out.println("Activity1->onStop");super.onStop();}@Overrideprotected void onDestroy() {System.out.println("Activity1->onDestroy");super.onDestroy();}}

          2.2 Acitvity2.java
package com.Andy.activitydemo;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 Activity2 extends Activity {TextView textView = null;Button butt2 = null;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main2);// 绑定textviewtextView = (TextView) findViewById(R.id.text);// 绑定buttonbutt2 = (Button) findViewById(R.id.butt2);// 设置监听返回butt2.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// 返回第一个activityIntent intent = new Intent(Activity2.this, Activity1.class);intent.putExtra("data", "hello my name is Activity2");startActivity(intent);}});// 获取activity1传递的IntentIntent intent1 = getIntent();// 获取Intent中的数据String data = intent1.getStringExtra("data");// 显示数据textView.setText(data);System.out.println("Activity2->onCreate");}@Overrideprotected void onStart() {super.onStart();System.out.println("Activity2->onStart");}@Overrideprotected void onResume() {System.out.println("Activity2->onResume");super.onResume();}@Overrideprotected void onPause() {System.out.println("Activity2->onPause");super.onPause();}@Overrideprotected void onRestart() {System.out.println("Activity2->onRestart");super.onRestart();}@Overrideprotected void onStop() {System.out.println("Activity2->onStop");super.onStop();}@Overrideprotected void onDestroy() {System.out.println("Activity2->onDestroy");super.onDestroy();}}


       3)layout下分别建立布局activity_main1.xml和activity_main2.xml

              3.1 activity_main1.xml

<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:orientation="vertical"    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.Andy.activitydemo.Activity1" >    <TextView        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="@string/hello_world" />    <Button        android:id="@+id/but1"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:text="跳转" /></LinearLayout>

              3.2 activity_main2.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical" >    <TextView        android:id="@+id/text"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="@string/hello_world1" />    <Button        android:id="@+id/butt2"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:text="返回" /></LinearLayout>

       4 ) 配置Manifest.xml(Manifest.xml配置后面讲解)

<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"    package="com.Andy.activitydemo"    android:versionCode="1"    android:versionName="1.0" >    <uses-sdk        android:minSdkVersion="14"        android:targetSdkVersion="14" />    <application        android:allowBackup="true"        android:icon="@drawable/ic_launcher"        android:label="@string/app_name"        android:theme="@style/AppTheme" >        <activity            android:name=".Activity1"            android:label="@string/app_name" >            <intent-filter>                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>        </activity>        <activity            android:name=".Activity2">        </activity>    </application></manifest>

       5)运行LogCat打印


7.Activity使用

     上面demo包含使用方式,在此仅仅描述创建步骤

      1)创建工程  

       2) 建java类继承Activity

public class Activity2 extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main2);}}
       3)建立activity_main.xml布局

       4)manifest.xml中注册activity类

<application        android:allowBackup="true"        android:icon="@drawable/ic_launcher"        android:label="@string/app_name"        android:theme="@style/AppTheme" >        <activity            android:name=".Activity1"            android:label="@string/app_name" >            <intent-filter>                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>        </activity>        <activity            android:name=".Activity2">        </activity>    </application>>

8.Activity1启动Activity2(例子)
8.1 startActivity(intent)启动另一个Activity传递数据
    传递数据:
       String data = "I am FirstActivity data";        Intent intent = new Intent(FirstActivity.this,SecondActivity.class);        intent.putExtra("data",data);        startActivity(intent);
       
    接收数据:         
       Intent intent = getIntent();        String data = intent.getStringExtra("data");        Toast.makeText(SecondActivity.this, data, Toast.LENGTH_LONG).show();

8.2 startActivityForResult(intent)启动另一个Activity传递数据
    FirstActivity传递数据(同上):
        String data = "I am FirstActivity data";        Intent intent = new Intent(FirstActivity.this,SecondActivity.class);        intent.putExtra("data",data);        startActivityForResult(intent,1);

        
    SecondActivity接收数据并回传:         
        Intent intent = new Intent();        intent.putExtra("return_data","I am SecondActivity data");        //setResult(arg0,arg1) arg0:返回处理结果 arg1:含数据的intent        setResult(RESULT_OK,intent);        finish();

    
    SecondActivity销毁回调onActivityResult()方法实现回传数据:
    //onActivityResult(int requestCode, int resultCode, Intent data) ,该方法在FirstActivity中实现    //requestCode:请求码,启动SecondActivity是intent传入的    //resultCode:结果码,setResult()中的结果码    //intent:返回结果数据,setResult()中返回    protected void onActivityResult(int requestCode, int resultCode, Intent data) {              super.onActivityResult(requestCode, resultCode, data);        switch (requestCode) {        case 1:            if (resultCode == RESULT_OK) {                String returnData = data.getStringExtra("return_data");                Toast.makeText(this, returnData, Toast.LENGTH_LONG).show();                }                break;            default:                break;        }    }


相关参考:http://www.androiddev.net/android%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0%E4%B8%80-intent%E7%94%A8%E6%B3%95%E6%80%BB%E7%BB%93/


欢迎转载,转载请注明出处,谢谢!

   

0 0
原创粉丝点击