一、提要
看来Android开发并没有我想象的那么简单,至少比Qt会费劲一些。
今天我们要做的就是在上一篇的基础上完成一个更为复杂的Helloworld,设设计到的知识点有:
Activity的概念,Button的使用,创建按钮监听,intent的使用,Menu的使用。
我们最终要实现的是效果如下:

Android入门(2) 不一样的HelloWorld续_menu

Android入门(2) 不一样的HelloWorld续_class_02


Android入门(2) 不一样的HelloWorld续_class_03

二、Activity
 一个Activity是一个应用程序组件,提供一个屏幕,用户可以用来交互为了完成某项任务,例如拨号、拍照、发送email、看地图。每一个activity被给予一个窗口,在上面可以绘制用户接口。窗口通常充满屏幕,但也可以小于屏幕而浮于其它窗口之上。
  一个应用程序通常由多个activities组成,他们通常是松耦合关系。通常,一个应用程序中的activity被指定为"main"activity,当第一次启动应用程序的时候呈现给用户的那个activity。每一个activity然后可以启动另一个activity为了完成不同的动作。每一次一个activity启动,前一个activity就停止了,但是系统保留activity在一个栈上(“back stack”)。当一个新activity启动,它被推送到栈顶,取得用户焦点。Back Stack符合简单“后进先出”原则,所以,当用户完成当前activity然后点击back按钮,它被弹出栈(并且被摧毁),然后之前的activity恢复。
  当一个activity因新的activity启动而停止,它被通知这种状态转变通过activity的生命周期回调函数。有许多回调函数一个activity可能会收到,源于它自己的状态变化-无论系统创建它、停止它、恢复它、摧毁它-并且每个回调提供你完成适合这个状态的指定工作的机会。例如,当停止的时候,你的activity应该释放任何大的对象,例如网络数据库连接。当activity恢复,你可以重新获得必要的资源和恢复被中断的动作。这些状态转换都是activity的生命周期的部分。

创建Activity的要点
1.一个Activity就是一个类,并且这个类要继承Activity;
2.需要复写onCreate方法;
3.每一个Activity都需要在AndroidManifest.xml文件中进行配置;
4.为每一个Activity添加必要的控件,Activity可以看作一个控件的容器;


三、intent

Intent负责对应用中一次操作的动作、动作涉及数据、附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组件,将 Intent传递给调用的组件,并完成组件的调用。
因此,Intent在这里起着一个媒体中介的作用,专门提供组件互相调用的相关信息,实现调用者与被调用者之间的解耦。


四、代码清单

//MainActivity.java


package com.example.activity_01;  import android.os.Bundle; import android.app.Activity; import android.app.AlertDialog; import android.content.Intent; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import android.view.View.OnClickListener;   public class MainActivity extends Activity { 	private EditText myTextEdit;     @Override     public void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);         setContentView(R.layout.activity_main);         TextView myTextView=(TextView)findViewById(R.id.myTextView);         myTextEdit=(EditText)findViewById(R.id.myEditText);         Button myButton=(Button)findViewById(R.id.myButton);         System.out.println("Begin");         myTextView.setText("Input your name!");         myButton.setText("confirm");         myButton.setOnClickListener(new ButtonListener());     }      @Override     public boolean onCreateOptionsMenu(Menu menu) {     	menu.add(0,1,1,R.string.exit);     	menu.add(0,2,2,R.string.about);        // getMenuInflater().inflate(R.menu.activity_main, menu);         return super.onCreateOptionsMenu(menu);     }          @Override 	public boolean onMenuItemSelected(int featureId, MenuItem item) { 		// TODO Auto-generated method stub     	if(item.getItemId()==1) finish();     	if(item.getItemId()==2) new AlertDialog.Builder(this) .setTitle("About") .setMessage("Powerd By Empty.") .show();   		return super.onMenuItemSelected(featureId, item); 	}  	class ButtonListener implements OnClickListener{  		@Override 		public void onClick(View view0) { 			// TODO Auto-generated method stub 			String val=myTextEdit.getText().toString();              //生成一个Intent对象              Intent intent=new Intent();              //设置传递的参数              intent.putExtra("val", val);              //从Activity IntentTest跳转到Activity IntentTest01              intent.setClass(MainActivity.this,SecondActivity.class);              //启动intent的Activity              MainActivity.this.startActivity(intent);              System.out.println("ClickMe"); 		}     }   } 


SecondActivity.java

package com.example.activity_01;  import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.widget.TextView;  public class SecondActivity extends Activity { 	 @Override  	    public void onCreate(Bundle savedInstanceState) {  	        super.onCreate(savedInstanceState);  	        setContentView(R.layout.second_layout);  	        Intent intent=getIntent();  	        String value=intent.getStringExtra("val");  	        TextView et=(TextView)findViewById(R.id.textView1);  	        et.setText("Hello,"+value);  	    }   } 

avtivity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"     xmlns:tools="http://schemas.android.com/tools"     android:layout_width="fill_parent"     android:layout_height="fill_parent"     android:orientation="vertical" >      <TextView         android:id="@+id/myTextView"         android:layout_width="fill_parent"         android:layout_height="wrap_content" />      <EditText         android:id="@+id/myEditText"         android:layout_width="fill_parent"         android:layout_height="wrap_content"/>      <Button         android:id="@+id/myButton"         android:layout_width="fill_parent"         android:layout_height="wrap_content" />  </LinearLayout>


sencond_layout.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/textView1"         android:layout_width="match_parent"         android:layout_height="wrap_content"         android:textSize="20sp" >     </TextView>  </LinearLayout>


别忘了在manifest里面将Activity注册,不然会报错。


六、参考资料
 <activity             android:name="SecondActivity"             android:label="@string/app_name"              android:screenOrientation="landscape"             android:windowSoftInputMode="adjustPan">             </activity>


Android developers:http://developer.android.com/training/basics/firstapp/running-app.html   google的官方教程,非常推荐。


雷一的博客:http://www.cnblogs.com/rayee/tag/Android/ 素然只有四篇,但作为入门教程还是很不错的。


Android 开发教程:网上流传的教程,缺点是有点老。