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


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

Android入门(2) 不一样的HelloWorld续_第1张图片

Android入门(2) 不一样的HelloWorld续_第2张图片




二、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 开发教程:网上流传的教程,缺点是有点老。

你可能感兴趣的:(android,layout,Class,import,button,menu)