Android组件(Activity)

本文介绍了Android组件中的Activity,包括其概述、作用、生命周期以及如何在两个Activity之间切换。Activity作为用户交互界面,承载多种View,文章通过实例展示了Activity生命周期的变化,并提供了Activity1启动Activity2的代码示例。
摘要由CSDN通过智能技术生成
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;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main1);

		System.out.println("Activity1->onCreate");
		// 绑定butt1
		Button butt1 = (Button) findViewById(R.id.but1);
		// 设置点击监听
		butt1.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				// 启动第二个activity
				Intent 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传递的Intent
		Intent intent1 = getIntent();
		// 获取Intent中的数据
		String data = intent1.getStringExtra("data");
		// 显示数据
		Toast.makeText(this, data, Toast.LENGTH_LONG).show();

	}

	@Override
	protected void onStart() {
		super.onStart();
		System.out.println("Activity1->onStart");
	}

	@Override
	protected void onResume() {
		System.out.println("Activity1->onResume");
		super.onResume();
	}

	@Override
	protected void onPause() {
		System.out.println("Activity1->onPause");
		super.onPause();
	}

	@Override
	protected void onRestart() {
		System.out.println("Activity1->onRestart");
		super.onRestart();
	}

	@Override
	protected void onStop() {

		System.out.println("Activity1->onStop");
		super.onStop();
	}

	@Override
	protected 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;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main2);
		// 绑定textview
		textView = (TextView) findViewById(R.id.text);
		// 绑定button
		butt2 = (Button) findViewById(R.id.butt2);
		// 设置监听返回
		butt2.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				// 返回第一个activity
				Intent intent = new Intent(Activity2.this, Activity1.class);
				intent.putExtra("data", "hello my name is Activity2");
				startActivity(intent);
			}
		});
		// 获取activity1传递的Intent
		Intent intent1 = getIntent();
		// 获取Intent中的数据
		String data = intent1.getStringExtra("data");
		// 显示数据
		textView.setText(data);
		System.out.println("Activity2->onCreate");
	}

	@Override
	protected void onStart() {
		super.onStart();
		System.out.println("Activity2->onStart");
	}

	@Override
	protected void onResume() {
		System.out.println("Activity2->onResume");
		super.onResume();
	}

	@Override
	protected void onPause() {
		System.out.println("Activity2->onPause");
		super.onPause();
	}

	@Override
	protected void onRestart() {
		System.out.println("Activity2->onRestart");
		super.onRestart();
	}

	@Override
	protected void onStop() {

		System.out.println("Activity2->onStop");
		super.onStop();
	}

	@Override
	protected 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 {
	@Override
	protected 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/


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

   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值