1. 程式人生 > >Android(一) activity、intent知識和總結

Android(一) activity、intent知識和總結

導讀:
第一部分,基礎activity知識
第二部分,Intent傳遞值
第三部分,Intent傳遞類物件
Activity

1.建立Activity的注意點

  • 1.1一個Activity一個類,繼承Activity
  • 1.2需要overide onCreate()方法,第一次執行的時候先呼叫onCreate
  • 1.3必須在AndroidMainfest.xml中註冊Activity
  • 1.4為Activity新增必要的控制元件

2.補充

  • 通常一個xml對應一個activity,此外多個activity也可以對應一個xml
  • xml的作用? —將動作和顯示分離

多個Activity

如何跳轉?

startActivity(Intent.intent);

Intent

Intent的基本作用

包含一組資訊
component name 指定啟動哪個activity,service,廣播接收器…
action 指定另一個activity做什麼
data 傳送的資料
extras 額外資訊,鍵值對
category
flags

Intent使用簡易例項

Intent intent=new Intent();
intent.setClass(Activity0.this, Activity1.class);
startActivity(intent);

* 新建activity1
* 記得activity要註冊2

Intent傳送資料

intent.putExtra("extras", "nice!");
接收
Intent intent = this.getIntent();
String extrasString = intent.getStringExtra("extras");

Intent傳遞資料給另一個應用程式(發簡訊為例)

 Uri uri = Uri.parse("smsto:10086");
 Intent intent = new Intent(Intent.ACTION_SENDTO, uri);
 intent.putExtra("sms_body"
, "簡訊內容"); startActivity(intent);
Intent傳遞類物件

在我自己的專案裡準備用Intent將socket傳遞給第二個activity,特此感謝作者的教導。

自己的類要實現serializable

傳遞類物件

Bundle bundle = new Bundle();
bundle.putSerializable("socket", socket);
intent.putExtras(bundle);

得到類物件

Intent intent = getIntent();
socket = (ServerSocket) intent.getSerializableExtra("socket");

可以使用serializable或者parcelable

具體內容google學習

補充瑣碎知識點

1-哪些android元件可註冊Intent handlers

  1. Activity
  2. BroadcastReceiver
  3. Service

2- Url.parse(link)的作用(link為http的URL)

建立URL object(物件)

3-沒有指定action的IntentFilter將會匹配來自Intent的任何action

4-沒有category的IntentFilter僅僅匹配沒有catogory的Intent,而不是和萬用字元一樣(和action不一樣)

5-

<activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
</activity>

<action android:name="android.intent.action.MAIN" />
決定應用程式最先啟動的Activity

<category android:name="android.intent.category.LAUNCHER" />
決定應用程式是否顯示在程式列表裡

**6-**android.intent.category.DEFAULT的用途和使用

基礎控制元件

按鍵監聽

開啟監聽
client_login.setOnClickListener(new ButtonListener());
可以通過v.getId得到R.ID來區分各個按鍵

class ButtonListener implements OnClickListener
    {

        public void onClick(View v) {
            // TODO Auto-generated method stub
            Intent intent = new Intent();
            intent.setClass(ClientActivity.this, ClientMainActivity.class);
            ClientActivity.this.startActivity(intent);
        }

    }
  1. source->Override/Implement
  2. < activity
    android:name=”.ClientMainActivity”
    android:label=”@string/app_name” >
    < /activity>