Android入門(2) 不一樣的HelloWorld續

來源:互聯網
上載者:User


一、提要
看來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);    }        @Overridepublic 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{ @Overridepublic void onClick(View view0) {// TODO Auto-generated method stubString 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 開發教程:網上流傳的教程,缺點是有點老。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.