編輯:關於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(); } } ); } }
由於初學,知識有限,此作為我的讀書筆記,見笑了, 完整代碼參見完整代碼下載
前言 Note: 本文中的策略適用於Android平台上android.location包中的定位API。不同於Google Location Services API,
自動提示文本框(AutoCompleteTextView)可以加強用戶體驗,縮短用戶的輸入時間(百度的搜索框就是這個效果)。先給大家展示下效果圖,如果大家感覺
封面 目錄1 目錄2 為什麼寫這本書寫這本書的念頭由來已久了。也許是從我打算寫《Android源碼設計模式解析與實戰》那時起就萌生了這個念頭,因
1. UIAutomatorViewer自動化測試是Android測試的趨勢, 穩定\復用, 最常用的工具就是Espresso.使用UIAutomatorViewer獲取