android學習筆記(4)Intent初級學習,androidintent
對應若水老師的視頻教程第7課
這節課程講解了intent,是對動作的抽象描述,是意圖的意思,建立一個intent就可以給一個動作給他來執行.inten是android開發的精髓所在.
一,點擊按鈕實現給一個指定號碼打電話
btn1.setOnClickListener(listener); private OnClickListener listener =new OnClickListener() {Intent intent = new Intent();@Overridepublic void onClick(View v) {intent.setAction(Intent.ACTION_CALL); //給intent賦與打電話的動作intent.setData(Uri.parse("tel:110")); //設定電話號碼startActivity(intent); //啟動Toast.makeText(MainActivity.this,"打電話給110",Toast.LENGTH_SHORT).show();//顯示提示}};二,點擊按鈕實現給一個指定號碼發簡訊
btn1.setOnClickListener(listener); private OnClickListener listener =new OnClickListener() {Intent intent = new Intent();@Overridepublic void onClick(View v) {case R.id.button1:intent.setAction(Intent.ACTION_SENDTO);intent.setData(Uri.parse("smsto:110"));intent.putExtra("sms_body", "沒事,騷擾下~~"); //注意格式startActivity(intent);Toast.makeText(MainActivity.this,"發簡訊給110",Toast.LENGTH_SHORT).show();//顯示提示}};三,在一個activity中啟動另一個activity
一套activity最基本的要包括這些內容:
1,activity類(xxActivity.java)
2,布局檔案(layout/xxx.xml)
3,在設定檔中註冊這個activity
<activity
android:name="xxxxx"
android:label="xxxx" >
..................
</activity>
有了這些基本要素,就可以在另一個activity中調用這個activity了.
//為了方便,把這個跳轉放在一個button點擊事件中去.Intent intent=new Intent();intent.setClass(MainActivity.this,SecondActivity.class);//參1是packageContext,一般是指向MainActivity自己;參2是cls指向要調用的activity的classstartActivity(intent);
設定檔加入:
<activity android:name=".SecondActivity" //與activity的名字相同android:label="@string/app_name"> //根據需要自行修改</activity>
以上這些都是最基本的內容,如果你的SecondActivity中有功能,運行時就能實現從MainActivity跳轉到SecondActivity去執行它的功能.接下來就是怎麼在activity之間傳遞資料呢?
發送方:
Intent intent=new Intent();intent.setclass(MainActivity.this,SecondActivity.class);intent.putExtra("str","hello"); //putExtra();可以發送許多類型的資料!startActivity(intent);接收方:
Intent intent=getIntent();Bundle bundle=intent.getExtras(); //bundle是什麼鬼?評論上補充.String str=bundle.getString("str");//字元就存進了str中了接著就有意思了,上面可以理解為:實現點擊一個按鈕跳轉到另一個介面去,接下來得在另一個介面中點擊一個按鈕又跳回來,並且還要返回一個資料.
在MainActivity中定義:
private final static int REQUEST_CODE=1; //相當於一個專用暗號,為下面定義的intent所有,如果定義了多個Intent就要分配 不同的暗號,為什麼要分配暗號?就是為了一對一,防止多對一或一對多的情況出現
按鈕監聽中寫:
Intent intent=new Intent();intent.setclass(MainActivity.this,SecondActivity.class);intent.putExtra("str","hello");//startActivity(intent);startActivityForResult(intent,REQUEST_CODE); //startActivity(intent);是無傳回值的,這個就有.但要寫一個 //onActivityResult方法如下
protected void onActivityResult(int requestCode,int resultCode,Intent data)//學會用方法構造器構造它!{if(requestCode==REQUEST_CODE)//防止多對一{if(resultCode==secondActivity.RESULT_CODE)//防止一對多{Bundle bundle=data.getExtras();String str=bundle.getString("back");Toast.makeText(MainActivity.this,str,Toast.LENGTH_LONG).show();}}}在SecondActivity中定義:
public final static int RESULT_CODE=1;
按鈕監聽中寫:
Intent intent=new Intemt();intent.putExtra("back","Back Data");setResult(RESULT_CODE,intent); //設定傳回值finish(); //kill當前的activity這樣就OK啦!想一想,安卓的軟體是不是很容易?
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。