当前位置: 代码迷 >> Android >> Android入门(二) 不一样的HelloWorld续
  详细解决方案

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

热度:30   发布时间:2016-05-01 14:54:52.0
Android入门(2) 不一样的HelloWorld续

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





二、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>

六、参考资料

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


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


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

  相关解决方案