跟我學android-Activity介紹

來源:互聯網
上載者:User

標籤:android   style   blog   color   io   使用   ar   for   檔案   

Activity是android四大組件之一,activity 可以看成是一個螢幕,使用者可以在這裡做一些操作。activity通常都是滿屏的,但也可以小於螢幕而浮於其它視窗之上,比如把activity 的風格設定為 dialog

如何建立一個Activity

首先,我們需要為這個activity 建立一個介面(布局)

然後,我們需要建立一個類,這個類是 Activity 的子類。

接著,在這個類裡 重寫onCreate 方法,並且在該方法裡載入布局檔案(setContentView),初始化控制項(findViewById).

最後,需要在androidmanifest.xml 裡聲明這個activity。

如果,你 想設定 該activity 為程式的入口,你需要為該activity 設定 intent-filter

1  <!-- 入口申明 -->2             <intent-filter>3                 <action android:name="android.intent.action.MAIN" />4 5                 <category android:name="android.intent.category.LAUNCHER" />6             </intent-filter>

啟動一個新的activity 我們可以使用 startActivity 這個方法

1         Intent intent = new Intent(this,SecondActivity.class);2         intent.putExtra("type", type);3         startActivity(intent);

以上代碼錶示,我要開啟一個 SecondActivity,同時 給它傳遞一個資料過去。

有時候,我們 需要開啟其他應用程式,這個時候,使用上面這個方式 就做不到了。

我們需要採用隱式Intnet的方式來開啟

1 Intent intent = new Intent(Intent.ACTION_CALL);2 Uri uri = Uri.parse("tel:110");3 intent.setData(uri);4 startActivity(intent);

以上代碼錶示的是:撥打110。

注意:撥號需要撥號許可權

<uses-permission android:name="android.permission.CALL_PHONE" />

 

如果我們的應用程式,運行被其他應用程式調用,我們需要 在 androidmanifest.xml 找到可以被喚起的activity,在這個節點 裡定義一個intent-filter,設定我們自己的action

1  <intent-filter >2         <action android:name="com.zy.android.firstandroid"/>3         <category android:name="android.intent.category.DEFAULT"/>4  </intent-filter>

設定好了之後,我們在其他應用程式裡 就可以通過以下的方式 訪問這個 activity

1 Intent intent = new Intent("com.zy.android.firstandroid");2 startActivity(intent);

有時候,我們不僅僅是啟動一個新activity,我們可能需要 接收新activity 返回來的資料,如果用startActivity 這種方式,我們就沒法擷取返回的資料

android為我們提供了另一種方式 可以 滿足這個需求

使用 startActivityForResult 替代 startActivity

同時,我們需要在 接收資料的這個activity裡 重寫 onActivityResult 這個回調方法。當新activity 返回資料的時候,我們就可以在這個方法裡擷取到資料

1 @Override2     protected void onActivityResult(int requestCode, int resultCode, Intent data) {3         // TODO Auto-generated method stub4         super.onActivityResult(requestCode, resultCode, data);5         //requestCode 請求碼6         //resultCode 結果碼7         //data  新activity返回的資料存放區在這裡,可以取出來使用8 }

activity的生命週期 不在這個地方給大家做介紹了。

接下來 我們介紹下 儲存activity的狀態

我們知道,當activity的狀態處於 onPause,onStop,的時候 有可能會被系統kill掉,如果被系統kill掉之後,使用者返回回來,看到的 是一個全新的介面,可是使用者並不知道 系統kill掉了之前的activity,使用者就會覺得很奇怪,咦,我剛才的操作呢?哪去了?哪去 了?

如果這樣的事情真的發生,這將會是一個非常不友好的應用!

為了避免出現這個的情況,我們需要在 系統kill掉activity之前 把一些資料儲存下來。

activity為我們提供了一個回調方法 叫 onSaveInstanceState()

我們可以重寫這個方法,然後在該方法裡 做資料儲存操作,儲存到 Bundle裡去

1 @Override2     protected void onSaveInstanceState(Bundle outState) {3         // TODO Auto-generated method stub4         super.onSaveInstanceState(outState);5         outState.putString("name", "使用者操作資料");6     }

 

儲存之後,我們從什麼地方取呢? 我們可以在2個地方取到這些資料

仔細的園友 可定會發現這樣一個問題,onCreate 這個方法裡有個參數,可以為什麼我們一直沒使用過它? 其實 這個參數 就是 我們剛才儲存的資料,到系統kill掉之後,我們如果做了資料儲存,那麼系統 在下次開啟這個activity 的時候 會把這個資料一起給我們帶進來

so,我們可以在 onCreate 這個方法裡  擷取資料

 1 @Override 2     protected void onCreate(Bundle savedInstanceState) { 3         // TODO Auto-generated method stub 4         super.onCreate(savedInstanceState); 5         setContentView(R.layout.result_layout); 6         //擷取 系統kill之前儲存的資料         7         if(savedInstanceState!=null){ 8             String name = savedInstanceState.getString("name"); 9         }10         11         tv_info = (TextView) findViewById(R.id.tv_info);12         btn_email = (Button) findViewById(R.id.btn_email);13         btn_phone = (Button) findViewById(R.id.btn_phone);14         15         btn_email.setOnClickListener(click);16         btn_phone.setOnClickListener(click);17         18     }

我們還可以重寫 onRestoreInstanceState() 這個回調方法,在這個方法裡同樣也可以擷取到 系統killactivity之前儲存的資料

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

跟我學android-Activity介紹

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.