Android 技巧匯總(1)參考模板_第1頁
Android 技巧匯總(1)參考模板_第2頁
Android 技巧匯總(1)參考模板_第3頁
Android 技巧匯總(1)參考模板_第4頁
Android 技巧匯總(1)參考模板_第5頁
已閱讀5頁,還剩69頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、  <<android 的幾個技巧1>>目錄  <<android 的幾個技巧1>>10. 入門實(shí)例剖析121.在測試時,如何實(shí)現(xiàn)一個提示82.可以使用AlertDialog.Builder 才產(chǎn)生一個提示框.94.menu 的用法.101. 簡單的代碼102. menu實(shí)現(xiàn)的兩種方法105.Activity 的切換141. 代碼142. 詳解:156.Android UI Layout191. AbsoluteLayout197. Tab以及 HostTab操作208. List (圖片/按鈕/標(biāo)題/文本

2、)26LIST例一27LIST例二36LIST例三409. 調(diào)用瀏覽器 載入某網(wǎng)址4310.監(jiān)控應(yīng)用程序包的安裝&刪除43方法一:43方法二:4611. 使用Toast輸出一個字符串5212. 把一個字符串寫進(jìn)文件5213. 把文件內(nèi)容讀出到一個字符串5414. 調(diào)用Android installer 安裝和卸載程序5515. 結(jié)束某個進(jìn)程5516. 設(shè)置默認(rèn)來電鈴聲5617. 開機(jī)自啟動5718. 線程與子線程58handlerMessage實(shí)例5819. Service601. 什么是Service602. 如何使用Service603. Service的生命周期66附) 常用界面

3、截圖:67提示167提示268菜單681 / 740. 入門實(shí)例剖析1開卷語俗話說,“熟讀唐詩三百首,不會作詩也會吟”。最近收集了很多Android的示例代碼,從這些代碼的閱讀和實(shí)驗(yàn)中學(xué)習(xí)到很多知識,從而產(chǎn)生寫這個系列的打算,目標(biāo)就是一步步跟著實(shí)例進(jìn)行動手實(shí)作,真正從“做”中體會和學(xué)習(xí)Android開發(fā)。 本文目標(biāo)是Android自帶的一個范例程序:記事本, 預(yù)備知識搭建開發(fā)環(huán)境,嘗試編寫”Hello World”,了解Android的基本概念,熟悉Android的API(官方文檔中都有,不贅述)。程序截圖先來簡單了解下程序運(yùn)行的效果 1 2 3 4程序入口點(diǎn)類似于win32程序里的WinMa

4、in函數(shù),Android自然也有它的程序入口點(diǎn)。它通過在AndroidManifest.xml文件中配置來指明,可以看到名為NotesList的activity節(jié)點(diǎn)下有這樣一個intent-filter,其action為ent.action.MAIN,Category指定為 ent.category.LAUNCHER,這就指明了這個activity是作為入口activity,系統(tǒng)查找到它后,就會創(chuàng)建這個activity實(shí)例來運(yùn)行,若未發(fā)現(xiàn)就不啟動(你可以把MAIN改名字試試)。<intent-filter><action andro

5、id:name="ent.action.MAIN"/><category android:name="ent.category.LAUNCHER"/></intent-filter>NotesList詳解就從入口點(diǎn)所在的activity(見圖1)開始,可以看到這個activity最重要的功能就是顯示日志列表。這個程序的日志都存放在Sqlite數(shù)據(jù)庫中,因此需要讀取出所有的日志記錄并顯示。先來看兩個重要的私有數(shù)據(jù),第一個PROJECTION字段指明了“日志列表“所關(guān)注的數(shù)據(jù)庫中的字段

6、(即只需要ID和Title就可以了)。privatestaticfinal String PROJECTION =new String Notes._ID, / 0 Notes.TITLE, / 1 ;第二個字段COLUMN_INDEX_TITLE指明title字段在數(shù)據(jù)表中的索引。privatestaticfinalint COLUMN_INDEX_TITLE =1;然后就進(jìn)入第一個調(diào)用的函數(shù)onCreate。 Intent intent = getIntent(); if (intent.getData() =null) intent.setData(Notes.CONTENT_URI);

7、 因?yàn)镹otesList這個activity是系統(tǒng)調(diào)用的,此時的intent是不帶數(shù)據(jù)和操作類型的,系統(tǒng)只是在其中指明了目標(biāo)組件是Notelist,所以這里把”content:/ vider.NotePad/notes”保存到intent里面,這個URI地址指明了數(shù)據(jù)庫中的數(shù)據(jù)表名(參見以后的NotePadProvider類),也就是保存日志的數(shù)據(jù)表notes。 Cursor cursor = managedQuery(getIntent().getData(), PROJECTION, null, null, Notes.DEFAULT_SORT_ORDER);

8、然后調(diào)用managedQuery函數(shù)查詢出所有的日志信息,這里第一個參數(shù)就是上面設(shè)置的” content:/ vider.NotePad/notes”這個URI,即notes數(shù)據(jù)表。PROJECTION 字段指明了結(jié)果中所需要的字段,Notes.DEFAULT_SORT_ORDER 指明了結(jié)果的排序規(guī)則。實(shí)際上managedQuery并沒有直接去查詢數(shù)據(jù)庫,而是通過Content Provider來完成實(shí)際的數(shù)據(jù)庫操作,這樣就實(shí)現(xiàn)了邏輯層和數(shù)據(jù)庫層的分離。SimpleCursorAdapter adapter =new SimpleCursorAdapter(thi

9、s, R.layout.noteslist_item, cursor, new String Notes.TITLE , newint android.R.id.text1 ); setListAdapter(adapter); 查詢出日志列表后,構(gòu)造一個CursorAdapter,并將其作為List View的數(shù)據(jù)源,從而在界面上顯示出日志列表??梢钥吹剑诙€參數(shù)是R.layout.noteslist_item,打開對應(yīng)的noteslist_item.xml文件,<TextView xmlns:android=" android:id="android:id/te

10、xt1" android:layout_width="fill_parent" android:layout_height="?android:attr/listPreferredItemHeight" android:textAppearance="?android:attr/textAppearanceLarge" android:gravity="center_vertical" android:paddingLeft="5dip" android:singleLine=&quo

11、t;true"/> 就是用來顯示一條日志記錄的TextView,最后兩個字段指明了實(shí)際的字段映射關(guān)系,通過這個TextView來顯示一條日志記錄的title字段。處理“選擇日志”事件既然有了“日志列表”,就自然要考慮如何處理某一條日志的單擊事件,這通過重載onListItemClick方法來完成, Override protectedvoid onListItemClick(ListView l, View v, int position, long id) Uri uri = ContentUris.withAppendedId(getIntent().getData(),

12、id); String action = getIntent().getAction(); if (Intent.ACTION_PICK.equals(action) | Intent.ACTION_GET_CONTENT.equals(action) / The caller is waiting for us to return a note selected by / the user. The have clicked on one, so return it now. setResult(RESULT_OK, new Intent().setData(uri); else / Lau

13、nch activity to view/edit the currently selected item startActivity(new Intent(Intent.ACTION_EDIT, uri); 首先通過”content:/ vider.NotePad/notes”和日志的id 號拼接得到選中日志的真正URI,然后創(chuàng)建一個新的Intent,其操作類型為Intent.ACTION_EDIT,數(shù)據(jù)域指出待編輯的日志URI(這里只分析else塊)。Intent深度剖析那么,上面這句startActivity(new Intent(Intent.ACTION_

14、EDIT, uri)執(zhí)行后會發(fā)生什么事情呢?這時候Android系統(tǒng)就跳出來接管了,它會根據(jù)intent中的信息找到對應(yīng)的activity,在這里找到的是NoteEditor這個activity,然后創(chuàng)建這個activity的實(shí)例并運(yùn)行。那么,Android又是如何找到NoteEditor這個對應(yīng)的activity的呢?這就是intent發(fā)揮作用的時刻了。new Intent(Intent.ACTION_EDIT, uri)這里的Intent.ACTION_EDIT=” ent.action.EDIT”,另外通過設(shè)置斷點(diǎn),我們看下這里的uri值: 可以看到選中的日志條目的

15、URI是:content:/vider.NotePad/notes/1然后我們再來看下Androidmanfest.xml,其中有這個provider<provider android:name="NotePadProvider" android:authorities="vider.NotePad"/> 發(fā)現(xiàn)沒有?它也有vider.NotePad,這個是content:/vider.NotePad/notes/1的一部分,同時&l

16、t;activity android:name="NoteEditor" android:theme="android:style/Theme.Light" android:label="string/title_note" android:screenOrientation="sensor" android:configChanges="keyboardHidden|orientation"><!- This filter says that we can view or edit

17、 the data of a single note -><intent-filter android:label="string/resolve_edit"><action android:name="ent.action.VIEW"/><action android:name="ent.action.EDIT"/><action android:name="com.android.notepad.action.EDIT_NOTE&

18、quot;/><category android:name="ent.category.DEFAULT"/><data android:mimeType="vnd.android.cursor.item/vnd.google.note"/></intent-filter><!- This filter says that we can create a new note inside of a directory of notes. -><intent-filter>

19、<action android:name="ent.action.INSERT"/><category android:name="ent.category.DEFAULT"/><data android:mimeType="vnd.android.cursor.dir/vnd.google.note"/></intent-filter></activity> 上面第一個intent-filter中有一個action 名為andro

20、ent.action.EDIT,而前面我們創(chuàng)建的Intent也正好是Intent.ACTION_EDIT=” ent.action.EDIT”,想必大家已經(jīng)明白是怎么回事了吧。下面就進(jìn)入activity選擇機(jī)制了:系統(tǒng)從intent中獲取道uri,得到了content:/vider.NotePad/notes/1,去掉開始的content:標(biāo)識,得到vider.NotePad/notes/1,然后獲取前面的vider.NotePad,然后就到Androidmanfest.xml

21、中找到authorities為vider.NotePad的provider,這個就是后面要講的contentprovider,然后就加載這個content provider。<provider android:name="NotePadProvider" android:authorities="vider.NotePad"/>在這里是NotePadProvider,然后調(diào)用NotePadProvider的gettype函數(shù),并把上述URI傳給這個函數(shù),函數(shù)返回URI所對應(yīng)的類型(這里返

22、回Notes.CONTENT_ITEM_TYPE,代表一條日志記錄,而CONTENT_ITEM_TYPE = " vnd.android.cursor.item/vnd.google.note ")。 Override public String getType(Uri uri) switch (sUriMatcher.match(uri) case NOTES: return Notes.CONTENT_TYPE; case NOTE_ID: return Notes.CONTENT_ITEM_TYPE; default: thrownew IllegalArgument

23、Exception("Unknown URI "+ uri); 上面的sUriMatcher.match是用來檢測uri是否能夠被處理,而sUriMatcher.match(uri)返回值其實(shí)是由 sUriMatcher =new UriMatcher(UriMatcher.NO_MATCH); sUriMatcher.addURI(NotePad.AUTHORITY, "notes", NOTES); sUriMatcher.addURI(NotePad.AUTHORITY, "notes/#", NOTE_ID);決定的。然后系統(tǒng)

24、使用獲得的" vnd.android.cursor.item/vnd.google.note "和”ent.action.EDIT”到androidmanfest.xml中去找匹配的activity.<intent-filter android:label="string/resolve_edit"><action android:name="ent.action.VIEW"/><action android:name="ent.

25、action.EDIT"/><action android:name="com.android.notepad.action.EDIT_NOTE"/><category android:name="ent.category.DEFAULT"/><data android:mimeType="vnd.android.cursor.item/vnd.google.note"/></intent-filter>正好NoteEditor這個activity的

26、intent-filter滿足上述條件,這樣就找到了NoteEditor。于是系統(tǒng)加載這個類并實(shí)例化,運(yùn)行,然后就到了NoteEditor的OnCreate函數(shù)中(見后續(xù)文章)。小技巧1,在命令行中使用”adb shell”命令進(jìn)入系統(tǒng)中,然后”cd app”進(jìn)入應(yīng)用程序所在目錄,”rm XXX”就可以刪除你指定的apk,從而去掉其在系統(tǒng)頂層界面占據(jù)的圖標(biāo),若兩次”cd data”則可以進(jìn)入應(yīng)用程序使用的數(shù)據(jù)目錄,你的數(shù)據(jù)可以保存在這里,例如Notepad就是把其數(shù)據(jù)庫放在它的databases目錄下,名為note_pad.db.2,第一次啟動模擬器會比較慢,但以后就別關(guān)閉模擬器了,修改代碼,

27、調(diào)試都不需要再次啟動的,直接修改后run或debug就是。1.在測試時,如何實(shí)現(xiàn)一個提示可以使用1. Toast.makeText(this, "這是一個提示", Toast.LENGTH_SHORT).show(); 2. /從資源文件string.xml 里面取提示信息3.   Toast.makeText(this, getString(R.string.welcome), Toast.LENGTH_SHORT).show();這個提示會幾秒鐘后消失2.可以使用AlertDialog.Builder 才產(chǎn)生一個提示框. 

28、;  例如像messagebox那樣的1.    new AlertDialog.Builder(this)2.     .setTitle("Android 提示")3.     .setMessage("這是一個提示,請確定")4.     .show();帶一個確定的對話框1. new AlertDialog.Builder(this)2.  

29、0;       .setMessage("這是第二個提示")3.          .setPositiveButton("確定",4.                      

30、0;   new DialogInterface.OnClickListener()5.                                  public void onClick(DialogI

31、nterface dialoginterface, int i)6.                                      /按鈕事件7.    &#

32、160;                             8.                     

33、;     )9.          .show();AlertDialog.Builder 還有很多復(fù)雜的用法,有確定和取消的對話框1. new AlertDialog.Builder(this)2.         .setTitle("提示")3.         

34、;.setMessage("確定退出?")4.         .setIcon(R.drawable.quit)5.         .setPositiveButton("確定", new DialogInterface.OnClickListener() 6.         pub

35、lic void onClick(DialogInterface dialog, int whichButton) 7.         setResult(RESULT_OK);/確定按鈕事件8.         finish();9.         10.    

36、     )11.         .setNegativeButton("取消", new DialogInterface.OnClickListener() 12.         public void onClick(DialogInterface dialog, int whic

37、hButton) 13.          /取消按鈕事件14.         15.         )16.         .show();4. menu 的用法. 1. 簡單的代碼1. public static final

38、60;int ITEM_1_ID = Menu.FIRST;2. public static final int ITEM_2_ID = Menu.FIRST + 1;3. public static final int ITEM_3_ID = Menu.FIRST + 2;4.     5. public boolean onCreateOpti

39、onsMenu(Menu menu) 6.         super.onCreateOptionsMenu(menu);7. /不帶圖標(biāo)的menu8.         menu.add(0, ITEM_1_ID, 0, "item-1");       9. /帶圖標(biāo)的menu10.  

40、;       menu.add(0, ITEM_2_ID, 1, "item-2").setIcon(R.drawable.editbills2);11.         menu.add(0, ITEM_3_ID, 2, "item-3").setIcon(R.drawable.billsum1);12.    &

41、#160;    return true; 13. 14.15. public boolean onOptionsItemSelected(MenuItem item)16.        switch (item.getItemId() 17.        case 1:18.     

42、0;      Toast.makeText(this, "menu1",Toast.LENGTH_SHORT).show();            19.            return true;20.     

43、0;  case 2:21.         22.            return true;23.        case 3:24.          25.   

44、60;        return true;26.        27.        return false;28.     2. menu實(shí)現(xiàn)的兩種方法大部分的應(yīng)用程序都包括兩種人機(jī)互動方式,一種是直接通過GUI的 Views,其可以滿足大部分的交互操作。另外一種是應(yīng)用Menu,當(dāng)按下Menu按鈕后,會彈出與當(dāng)

45、前活動狀態(tài)下的應(yīng)用程序相匹配的菜單。這兩種方式相比較都有各自的優(yōu)勢,而且可以很好的相輔相成,即便用戶可以由主界面完成大部分操作,但是適當(dāng)?shù)耐卣筂enu功能可以更加完善應(yīng)用程序,至少用戶可以通過排列整齊的 按鈕清晰的了解當(dāng)前模式下可以使用的功能。有兩種方法可以為Android APPs添加菜單功能,下邊將對設(shè)置過程給出詳細(xì)的介紹:第一種方法,通過Layout來添加靜態(tài)菜單元素。一般情況下,開發(fā)者在res/Layout路徑下來定義應(yīng)用程序的GUI。應(yīng)用Eclipse創(chuàng)建一個新項(xiàng)目后,可以看到res/layout中存在一個 預(yù)置的main.xml文件,其作為程序默認(rèn)啟動界面。同樣,可以通過這種方式

46、創(chuàng)建一個靜態(tài)的Menu,創(chuàng)建方法參閱下邊的源代碼:?View Code XML<?xml version="1.0" encoding="utf-8"?>  <menu xmlns:android="    <item           android:id="+id/previous"          

47、60;android:title="string/previous"           android:enabled="false"          android:icon="android:drawable/ic_media_previous"/>          <!-th

48、ese may not be available in next api (level > 3), so be carefull->      <item           android:id="+id/play_pause"           android:title="string/play"    

49、;       android:icon="android:drawable/ic_media_play"/>      <item           android:id="+id/next"           android:title="string/next"

50、60;          android:icon="android:drawable/ic_menu_next"/>  </menu>在Activity類中調(diào)用剛剛創(chuàng)建的Menu,首先將當(dāng)前的Activity與指定的Menu XML相關(guān)聯(lián):1.Override2.public boolean onCreateOptionsMenu(Menu menu) 3.    super.onCreateOptionsMenu(menu);4. 

51、  getMenuInflater().inflate(R.layout.player_menu, menu);5.    return true;6.實(shí)現(xiàn)onOptionsItemSelected方法: (其目的是捕捉到菜單觸發(fā)事件后,對具體觸發(fā)的選項(xiàng)作出響應(yīng),實(shí)際調(diào)用的函數(shù)包含在各自的case中)01.Override02.public boolean onOptionsItemSelected(MenuItem item) 03.    switch (item.getItemId() 04.    case R.id

52、.previous:05.        previous(); /go to previous song in the playlist06.        return true;07.    case R.id.play_pause:08.        isPlaying() ? pause() : play(); /toggle play/pause09.   

53、60;    return true;10.    case R.id.next:11.        next(); /go to next song in the playlist12.        return true;13.    14.    return false; /should never happen15.最后可以通過onPrepareOptionMenu方法初始

54、化Menu Items的屬性:01.Override02.public boolean onPrepareOptionsMenu(Menu menu) 03.    /set play_pause menu item look04.    if(isPlaying() 05.        menu06.            .findItem(R.id.play_pause)07.   

55、60;        .setTitle(R.string.pause)08.            .setIcon(android.R.drawable.ic_media_pause);09.    else 10.        menu11.            .findItem(R.id.pla

56、y_pause)12.            .setTitle(R.string.play)13.            .setIcon(android.R.drawable.ic_media_play);14.    15.    return true;16.大部分程序都通過這種方式添加Menu菜單功能,而且通過以上的步驟來看,其實(shí)現(xiàn)方法非常簡單。第二種方法,在Activity類中動態(tài)創(chuàng)建

57、Menu。首先需要定義Menu Item識別序號:1.public static final MENU_PREVIOUS = 0; /no more R.ids2.public static final MENU_PLAY_PAUSE = 1;3.public static final MENU_NEXT = 2;實(shí)現(xiàn)onCreateOptionMenu()方法:(第一種方法中已經(jīng)通過xml定義了現(xiàn)成的Menu結(jié)構(gòu),所以不需要應(yīng)用這個方法)01.Override02.public boolean onCreateOptionsMenu(Menu menu) 03.    m

58、enu04.        .add(0, MENU_PREVIOUS, 0, R.string.previous)05.        .setIcon(android.R.drawable.ic_media_previous);06.    menu07.        .add(0, MENU_PLAY_PAUSE, 0, R.string.play)08.   

59、0;    .setIcon (android.R.drawable.ic_media_play);09.    menu10.        .add(0, MENU_NEXT, 0, R.string.next)11.        .setIcon(android.R.drawable.ic_media_next);12.    return true;13.引用與第一種方法相同的方式來捕捉菜單的行為

60、:01.Override02.public boolean onOptionsItemSelected(MenuItem item) 03.    switch (item.getItemId() 04.    case MENU_PREVIOUS:05.        previous(); /go to previous song in the playlist06.        return true;07.  

61、60; case MENU_PLAY_PAUSE:08.        isPlaying() ? pause() : play(); /toggle play/pause09.        return true;10.    case MENU_NEXT:11.        next(); /go to next song in the playlist12.   &#

62、160;    return true;13.    14.    return false; /should never happen15.對以上兩種方法的補(bǔ)充:根據(jù)需要設(shè)置不同Menu Item的屬性:1.menu.findItem(R.id.next).setEnabled(false);設(shè)置Menu Item從屬關(guān)系(添加子父級別):直接寫在方法中:1.menu2.        .addSubMenu(R.id.repeat)3.   

63、     .add(R.id.one)4.        .add(R.id.all)5.        .add(R.id.none);直接定義在XML Layout中:?View Code XML<item android:id="+id/repeat" android:title="string/repeat">  <menu> 

64、0;    <item android:id="+id/one" android:title="string/repeat_one"></item>      <item android:id="+id/all" android:title="string/repeat_all"></item>      <item android:id="+id/no

65、ne" android:title="string/repeat_none"></item>  </menu>這兩種不同的方法實(shí)現(xiàn)的目的是一樣的,而且不存在本質(zhì)上的卻別,具體根據(jù)實(shí)際情況(根據(jù)項(xiàng)目的結(jié)構(gòu)需要或者團(tuán)隊(duì)開發(fā)標(biāo)準(zhǔn))選擇合適的方法來創(chuàng)建Menu。5.Activity 的切換1. 代碼    2個Activity 的切換,沒有數(shù)據(jù)傳遞1. /從A到B2. Intent intent = new Intent();3.  

66、               intent.setClass(A.this, B.class);4.                 startActivity(intent);  2個Activity 之間傳遞數(shù)據(jù)    相關(guān)的幾個函數(shù)&

67、#160;   startActivityForResult    public final void setResult(int resultCode, String data)    回調(diào)函數(shù)    protected void onActivityResult(int requestCode, int resultCode, Intent data)     例如A到B,從B得到數(shù)據(jù)  1. /A到B

68、2. static final int RG_REQUEST = 0;3. Intent intent = new Intent();4. intent.setClass(A.this, B.class);5. startActivityForResult(intent,RG_REQUEST);6.                     

69、0;             7. /在B中處理8. Bundle bundle = new Bundle();bundle.putString("DataKey", edittext.getText().toString();/給bundle 寫入數(shù)據(jù)Intent mIntent = new Intent();mIntent.putExtras(bundle);setResult(RESULT_OK, mIntent);finish();9.1

70、0. /最后在A的回調(diào)函數(shù)里面接收數(shù)據(jù)11. if (requestCode = RG_REQUEST)       if (resultCode = RESULT_CANCELED)           setTitle("Canceled.");      else if(resultCode = RESULT_OK)       &

71、#160;   setTitle(String)data.getCharSequenceExtra("DataKey");        2. 詳解: 一個Android應(yīng)用程序很少會只有一個Activity對象,如何在多個Activity之間進(jìn)行跳轉(zhuǎn),而且能夠互相傳值是一個很基本的要求。在前面創(chuàng)建的MyApp中,我們通過點(diǎn)擊按鈕可以更新當(dāng)前界面上的文本內(nèi)容?,F(xiàn)在我們想換種方式,在點(diǎn)擊按鈕后,顯示一個新的屏幕,在這個屏幕上輸入一段話,然后再返回到原先的界面顯示剛才輸

72、入的那句話。首先我們新建這個新屏幕的布局文件input.xml,并添加一個文本輸入框和一個按鈕(注意,xml元素的命名不要和其他布局文件中的定義重名,因?yàn)樗械馁Y源都在R中進(jìn)行索引,比如id,如果重名了在使用R.id.*的時候就會有問題了)。這個布局文件對應(yīng)的是一個Activity,因此我們再新建一個Input類(繼承自Activity)用于顯示這個布局并響應(yīng)事件。然后,還有一個重要的工作,那就是在清單文件AndroidManifest.xml中告訴程序,我定義了一個新的Activity,你可以去調(diào)用它。我們希望在以前的那個主界面上點(diǎn)擊按鈕以后可以跳轉(zhuǎn)到文本輸入界面,所以我們需要對按鈕的onC

73、lick事件進(jìn)行定義:在這段代碼里出現(xiàn)了一些新東西。首先是Intent,它是Android一個很重要的類.Intent直譯是“意圖”,什么是意圖呢?比如你想從這個Activity跳轉(zhuǎn)到另外一個Activity,這就是一個意圖。它不但可以連接多個Activity,還可以在它們之間傳遞數(shù)據(jù)。在這里,我們就是用Intent從MyApp對象跳轉(zhuǎn)到了Input對象。再看緊跟著的startActivityForResult()方法,顧名思義,它可以從一個定義好的Intent對象啟動一個新的Activity,并且,這個Activity會返回執(zhí)行的結(jié)果,這些內(nèi)容下面馬上就會提到。好,這里我們已經(jīng)可以調(diào)出新Activity了,我們看一下執(zhí)行

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論