先回顧一下intent:什麼叫intent,
intent是乙個將要執行的動作的抽象的描述,由intent來協助完成android各個元件之間的通訊。比如呼叫activity例項化物件的startactivity()來啟動乙個activity,或者由broadcast intent()來傳遞給所有感興趣的broadcastreceiver, 或者由startservice()/bindservice()來啟動乙個後台的service。可見,intent主要用來啟動activity或者service(並攜帶需要傳遞的引數資訊),intent理解成activity之間的粘合劑。
intent的使用方式,有以下2種:
顯示呼叫 1:
public class userinfo
//建立乙個顯式的 intent 物件(方法一:在建構函式中指定)
intent intent = new intent(intent_demo.this, intent_demo1_result.class);
bundle bundle = new bundle();
bundle.putstring("id", strid);
intent.putextras(bundle);
intent.putextra("username", "test");
intent.putextra("userinfo", new userinfo(1, "name"));
startactivity(intent);
//建立乙個顯式的 intent 物件(方法二:用 setclass 方法)
intent intent = new intent();
bundle bundle = new bundle();
bundle.putstring("id", strid);
intent.setclass(intent_demo.this, intent_demo_result.class);
intent.putextras(bundle);
startactivity(intent);
隱式呼叫2:
//建立乙個隱式的 intent 物件:action 動作
/*** 這裡指定的是 androidmanifest.xml 檔案中配置的
* 標籤中的
* 所在的 activity,注意這裡都要設定
*/intent intent = new intent();
//設定 intent 的動作
intent.setaction("com.great.activity_intent.intent_demo.result");
bundle bundle = new bundle();
bundle.putstring("id", strid);
intent.putextras(bundle);
startactivity(intent);
再看看如何呼叫系統的元件:
1.撥打** //要使用這個必須在配置檔案中加入
uri uri = uri.parse("tel:13023198367");
intent intent = new intent(intent.action_call, uri);
startactivity(intent);
2.傳送簡訊
uri uri = uri.parse("smsto:13023198367");
intent intent = new intent(intent.action_sendto, uri);
intent.putextra("sms_body", "the sms text");
startactivity(intent);
3.傳送email
uri uri = uri.parse(mailto:[email protected]);
intent intent = new intent(intent.action_sendto, uri);
startactivity(intent);
intent intent = new intent(intent.action_view);
uri uri = uri.parse("file:///sdcard/a.***");
intent.setdataandtype(uri, "audio/***");
startactivity(intent);
多個activity之間傳值可以通過bundle物件儲存需要傳遞的資料,例如:
在intentdemoactivity裡面傳值,
intent explicitintent=new intent(intentdemoactivity.this, explicitactivity.class); //這是在intent的建構函式中指定edittext nametext=(edittext)findviewbyid(r.id.username);
// 通過bundle物件儲存需要傳遞的資料
bundle bundle=new bundle();
bundle.putstring("username", nametext.gettext().tostring());
//把bundle物件bundle給explicitintent
explicitintent.putextras(bundle);
startactivity(explicitintent);
兩個個activity之間切換
在explicitactivity頁面上加乙個返回按鈕,並在事件寫如下**:/*給上乙個activity返回結果*/
intent intent=new intent(explicitactivity.this, intentdemoactivity.class);
//這是在intent的建構函式中指定
explicitactivity.this.setresult(result_ok,intent);
/*結束本activity*/
explicitactivity.this.finish();
這樣就返回到intentdemoactivity這個activity去了。
我的學習之路
發信人 franky hoho 信區 cie 標 題 二 我的學習之路 發信站 荔園晨風bbs站 2005年12月27日18 30 07 星期二 站內信件 二 我的學習之路 1,暑假 為了能夠實現 dsp,學習c,這是今年七月份的事情,那時我的c基礎為0,我完 全不知道程式是什麼。那時什麼都想,我周...
我的MBD學習之路
mbd即為model based design 基於模型的設計。國內的汽車行業使用matlab simulink早已經不是什麼新鮮事兒了,我還在讀研的時候大家已經普遍的開始使用matlab simulink來做數學模型開發 資料處理分析以及演算法理論 在學校做專案的時候,那時候是用ti的dsp 24...
我的學習之路 bootstrap
bootstrap 內建了html,css,js外掛程式為一體的前端框架 響應式布局 設計一套頁面就可以使用於很多現實裝置 bootstrap 1.入門 響應式布局的容器 1.先進入jquery的js 2.再引入bootstrap的js 3.引入bootstrap的css檔案 4.設定視口 支援移動...