Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android初識之Activity組件

Android初識之Activity組件

編輯:關於Android編程

之前自己的編程完全是在PC上進行的,而且主要是在算法和數據結構上。由於某些需要加之認識到Android的重要性,且大學走到現在基本上沒什麼課了,空閒時間很多,於是就開始學習Android。本系列博客都將圍繞Android應用程序設計展開,由於本人是完全沒有Android程序設計基礎,所以內容都很基礎,希望與大家交流學習並得到指點。

1.Activity類的onCreate()方法

對於具有可視化界面的Android程序來說,必然要有一個Activity類或其派生類對象。一般來說,Activity與界面多為一對一的關系,每個Activity生成用戶界面也即是手機屏幕,在此過程中可以完成相關功能,實現用戶預先的邏輯設計,這是程序設計的關鍵所在。Activity對象是由onCreate()方法創建的,可以理解為onCreate()是構造函數,activity的onCreate()在第一次調用的時候執行,僅執行這一次,之後不再執行,如需要顯示該activity,直接從activity棧中取得。如下:

public class SecondAitivity extends Activity {
	private Button returnBack;

	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.second);
		returnBack = (Button) findViewById(R.id.returnBack);
		returnBack.setOnClickListener(new Button.OnClickListener() {
			public void onClick(View v) {
			}
		});
	}
}


onCreate()方法只在SecondActivity對象初始化是創建一次,但此內部卻注冊了Button監聽器。但每當點擊按鈕returnBack時執行匿名內部類裡的單擊回調函數OnClickListener的onClick()方法。

2.在Activity類中調用其他的Activity並傳遞數據

有時程序需要在一個界面中打開另一個界面並傳遞一些信息,對應在Activity類中調用其他的Activity並傳遞數據。這是就要用到Intent類以及Bundle類。下面我談談我對這兩個類的一些理解。Android中提供了Intent機制來協助應用間的交互與通訊,注意Intent不僅可以用在進程之間還可以用在進程內部,可知Intent至少包含目的對象和傳遞的數據信息。通過startActivity() 或startActivityForResult() 啟動一個Activity,具體機制可以參考這篇文章Android中的Intent的用法和原理屬性。Intent傳遞數據是通過Bundle類來實現的。bundle類中加入數據是map類型的既是鍵值對形式,key -value的形式,另一個activity裡面取數據的時候,就要用到key,找出對應的value,具體函數可以參考這篇博客Bundle方法說明。下面時段示例代碼:

Intent intent =new Intent(OneActivity.this,OtherActivity.class);//創建 email 
Bundle bundle =new Bundle();// 創建 email 內容
bundle.putString("key", "value");
intent.putExtra(bundle);// 封裝 email 
startActivity(intent);// 啟動新的 Activity 

接收方的Activity通過獲取Intent得到數據,具體看下面的代碼:

Intent intent =getIntent();//接收 email 
Bundle bundle =intent.getBundleExtra("key");//打開 email
bundle.getString("key");//讀取內容

不同界面之間傳遞信息往往是雙向的。有時需要從一個Activity中返回數據到前一個Activity,此時又要用到Intent和Bundle類。可見Intent類和Bundle類對Android程序之間和內部通信都是很重要的。

3.運行效果截圖

下面是一組關於Activity和他們之間通信的程序截圖,由於初學,沒有什麼內容,見笑了敲打

\ \

4.貼段代碼

package com.example.helloworld;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

public class MainActivity extends Activity {
	
	private Button bt;
	private EditText name;

	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		bt = (Button) findViewById(R.id.bt1);
		name = (EditText) findViewById(R.id.name);

		bt.setOnClickListener(new Button.OnClickListener() {
			public void onClick(View v) {
				String myName = name.getText().toString();
				Intent intent = new Intent();
				intent.setClass(MainActivity.this, SecondAitivity.class);
				Bundle bundle = new Bundle();
				bundle.putString("name", myName);
				intent.putExtras(bundle);
				// startActivity(intent);
				startActivityForResult(intent, 0);
			}
		});
	}

	protected void onActivityResult(int re,int code,Intent data)
	{
		switch(code)
		{
		case RESULT_OK:
			Bundle bundle=data.getExtras();
			String myName=bundle.getString("name");
			name.setText(myName);
			break;
			default:break;
		}
	}
}


package com.example.helloworld;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class SecondAitivity extends Activity {
	private TextView tv;
	private Button returnBack;
	private Bundle bundle;
	private Intent intent;
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.second);
	
	    intent=this.getIntent();
		bundle=intent.getExtras();
		//Bundle bundle=this.getIntent().getExtras();
		
		String myName=bundle.getString("name");
		tv=(TextView)findViewById(R.id.tv);
		tv.setText("歡迎"+myName+"來到Android世界");
		
		returnBack=(Button)findViewById(R.id.returnBack);
		returnBack.setOnClickListener(new Button.OnClickListener()
		{
			public void onClick(View v)
			{
			    SecondAitivity.this.setResult(RESULT_OK,intent);
			    SecondAitivity.this.finish();
			}
		}
		);
	}
}


由於初學,知識有限,此作為我的讀書筆記,見笑了, 完整代碼參見完整代碼下載


  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved