日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

小白带你学安卓——Intent

發布時間:2024/1/8 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 小白带你学安卓——Intent 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
對于Intent來說,我們之前也簡單的接觸到一些。它的作用也十分的明顯,用于傳遞一些數據;其實,它還有另一個用途,描述你想要干的事情,是Android四大組件(Activity,Service,BroadcastReciver,ContentProvider)之間的紐帶。這兩個關鍵的作用,我就帶著大家一一進行講解,方便大家的理解。

1.Activity之間傳遞數據:

a.傳遞基本數據類型/Stringb.傳遞Bundle(底層實現是Map)c.傳遞自定義對象(序列化)Serializable和Parcelable接口都可以實現 對 對象的序列化和反序列化Serializable接口是java提供的接口,它的序列化和反序列化是基于磁盤的,效率相對較低 (不可以跨進程通訊 )Parcelable接口是Android提供的接口,它的序列化和反序列化是基于內存的,效率要比Serializable要高。推薦使用。(跨進程通訊)注意:Parcelable序列化的時候,write屬性的順序必須和read的順序一致簡單的說,我們一般用到的在Activity之間傳遞數據無非就以上三種。接下來給大家看一下示例代碼,方便大家的理解。(這里不再給出XML文件的代碼,大家可以自行敲一下,因為只是一些簡單的布局,就沒有必要再浪費大家的時間)

(1)MainActivity.java

import java.io.Serializable; import java.util.ArrayList; import java.util.Map;import android.os.Bundle; import android.os.Parcel; import android.os.Parcelable; import android.app.Activity; import android.content.Intent; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener;public class MainActivity extends Activity implements OnClickListener {@Overrideprotected void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//事件監聽findViewById(R.id.button1).setOnClickListener(this);findViewById(R.id.button2).setOnClickListener(this);findViewById(R.id.button3).setOnClickListener(this);findViewById(R.id.button4).setOnClickListener(this);findViewById(R.id.button5).setOnClickListener(this);findViewById(R.id.button6).setOnClickListener(this);}@Overridepublic void onClick(View v){Intent intent = new Intent(this, SecondActivity.class);switch (v.getId()){//基本數據類型/Stringcase R.id.button1://數據 /** 參一:類似于Map中的key,到跳轉的界面后,通過此key將value取出來*/intent.putExtra("name", "張三");intent.putExtra("age", 20);break;//傳遞Bundlecase R.id.button2:/** Bundle:底層封裝的是Map,對HashMap進一步封裝,使用起來更加方便*/Bundle extras = new Bundle();extras.putString("name", "李四");extras.putInt("age", 18);intent.putExtras(extras);//傳遞數組case R.id.button3:intent.putExtra("animals", new String[]{"Dog","Cat","Pig"});break;//傳遞自定義對象(Person)Serializablecase R.id.button4:intent.putExtra("person", new Person("小明", 12));break;//傳遞自定義對象(Student)Parcelablecase R.id.button5:/** Serializable和Parcelable接口都可以實現 對 對象的序列化和反序列化* Serializable接口是java提供的接口,它的序列化和反序列化是基于磁盤的,效率相對較低* Parcelable接口是Android提供的接口,它的序列化和反序列化是基于內存的,效率要比Serializable要高。推薦使用。*/intent.putExtra("student", new Student("小亮", 15));break;case R.id.button6:ArrayList<Student> list = new ArrayList<Student>();list.add(new Student("小李", 20));list.add(new Student("小鄧", 22));intent.putParcelableArrayListExtra("list", list);break;}startActivity(intent);}}//實現 Parcelable class Student implements Parcelable {private String name;private int age;public Student(String name, int age){super();this.name = name;this.age = age;}public int describeContents() {return 0;}//將數據寫入Parcelpublic void writeToParcel(Parcel out, int flags) {out.writeString(name);out.writeInt(age);}public static final Parcelable.Creator<Student> CREATOR= new Parcelable.Creator<Student>() {public Student createFromParcel(Parcel in) {return new Student(in);}public Student[] newArray(int size) {return new Student[size];}};//從Parcel讀取數據private Student(Parcel in) {name = in.readString();age = in.readInt();}@Overridepublic String toString(){return this.name+" "+this.age;} }//Serializable:序列化接口 接口是在定義一種規范 class Person implements Serializable {private String name;private int age;public Person(String name, int age){super();this.name = name;this.age = age;}@Overridepublic String toString(){return this.name+" "+this.age;} }

(2)SecondActivity.java

import java.util.ArrayList; import java.util.Arrays;import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.widget.TextView;public class SecondActivity extends Activity {TextView mTvShow;@Overrideprotected void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_second);mTvShow = (TextView) findViewById(R.id.tv_show);//取上個界面傳過來的數據//哪個Intent啟動的此Activity,這個方法返回的就是這個IntentIntent intent=getIntent();/** 傳遞基本數據類型 String name = intent.getStringExtra("name");int age = intent.getIntExtra("age", 0);mTvShow.setText("name:"+name+" age:"+age);*//* * 傳遞Bundle數據* Bundle bdl = intent.getExtras();String name = bdl.getString("name");int age = bdl.getInt("age");mTvShow.setText("name:"+name+" age:"+age);*//* * 傳遞數組數據* String[] animals = intent.getStringArrayExtra("animals");mTvShow.setText("animals:"+Arrays.toString(animals));*//** 傳遞對象數據 Serializable* Person person=(Person) intent.getSerializableExtra("person");mTvShow.setText("person:"+person.toString());*//* * 傳遞對象數據 Parcelable* Student student=intent.getParcelableExtra("student");mTvShow.setText("person:"+student.toString());*///Parcelable類型的集合數據ArrayList<Student> list = intent.getParcelableArrayListExtra("list");mTvShow.setText("list:"+list.toString());}} 上面很多都是我自己打了注釋的,大家在參考代碼的時候,可以把注釋放開。以上呢,就是我理解的傳遞數據的一些知識點的整理。

2.Intent隱式意圖:

對于顯式意圖來說,大家理解起來肯定很容易,我貼一小段代碼,大家看后就理解了: a.顯示意圖:用于啟當前應用中的其它組件Intent intent = new Intent(this, Other1Activity.class);startActivity(intent);b.隱式意圖:意圖過濾器---可以用于同一個應用或者不同應用之間??赡苓@個概念大家不是很了解,那我現在帶著大家慢慢的去看一下隱式意圖到底是什么東東,其實在剛剛開始的時候,我對其理解也不是很透徹,但是看了一下網上的代碼和書,也是逐漸明白了其原理。接下來,我用我的大白話給大家講述一下:如果你有一個組件希望別的應用程序可以調用,你就應該給你這個組件配置一個intent-filter<intent-filter><action android:name="com.tz.go1"/><category android:name="android.intent.category.DEFAULT"/></intent-filter>intent-filter:包含兩部分 1,目的【action】---->你要到哪里去2,內容【category+data】----》去的路上要帶什么 區分性的數據和內容性的數據可以認為就在Action的基礎上增加了過濾條件I.action+category默認category (android.intent.category.DEFAULT)必須配置,你也可以添加自己的。II.action+category+data(增加了一個過濾條件)<dataandroid:scheme="sun"android:host="www.sun.com"android:path="/mypath"/>URI:統一資源標識 組成跟URL基本一樣Uri:sun://www.sun.com/shuyiURL:網址,統一資源定位符http://www.baidu.com/index.htmlhttp:// ----scheme 協議www.baidu.com ---host 主機地址index.html ----path 路徑III.action+category+data+mimeType(增加了一個過濾條件)<data android:scheme="myscheme" android:mimeType="image/*"/>但是這里有一個問題要大家注意一下:當data和mimeType同時存在時,不要單獨通過setData或setType方法進行設置,需要使用setDataAndType進行設置。至于這里的代碼,我寫的不是很全,大家可以去網上搜一搜,代碼還是很多的~不好意思啦!

總結

以上是生活随笔為你收集整理的小白带你学安卓——Intent的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 黄色激情视频网站 | 四虎国产视频 | 日本xxxx色 | www.youjizz.com中国 | 欧美一级网站 | 日韩中文字幕久久 | 久久综合操| 亚洲精品成人久久 | 狠狠操夜夜爽 | 午夜爽视频 | 新婚夫妇白天啪啪自拍 | 免费一级肉体全黄毛片 | 四虎永久地址 | 日韩av免费在线看 | 黄色无毒网站 | 日韩欧美亚洲天堂 | 亚洲乱乱 | av黄色av | 丰满人妻翻云覆雨呻吟视频 | 欧美成人三级精品 | 成人v精品蜜桃久一区 | 欧美 日韩 国产在线 | 国产理论在线观看 | h部分肌肉警猛淫文 | 波多野结衣av在线观看 | 亚洲成人免费视频 | 熟女人妇 成熟妇女系列视频 | 国产又爽又色 | xxxwww黄色 | 中文字幕人成乱码熟女香港 | 狠狠人妻久久久久久综合麻豆 | 欧美一性一乱一交一视频 | 扒开女人屁股进去 | 国产二区av | 国产99久一区二区三区a片 | 国产精品久线在线观看 | 国产黄在线免费观看 | 日韩色网站 | 男女插插插视频 | 美女扒开尿口让男人爽 | 久久yy| 一区二区三区四区免费视频 | 精品久久久久久久久久久aⅴ | www.色悠悠 | 黄色大片网站在线观看 | 少妇裸体挤奶汁奶水视频 | 韩国91视频 | 亚洲自拍偷拍图 | 国产乱码久久久久久 | 国产天堂网| 欧美三级网 | 97视频久久久 | 亚洲青草| 国产精品18p | 色偷偷欧美 | 国产成人精品无码免费看在线 | 日韩精品视频一区二区三区 | 中国黄色一级视频 | 亚洲欧美日韩一区 | 久免费一级suv好看的国产 | 日韩成人不卡 | hs视频在线观看 | 日韩国产毛片 | 欧美精品福利视频 | 亚洲第一在线视频 | 美女张开腿让男人操 | 亚洲av无码久久精品狠狠爱浪潮 | 欧美精品视| 日韩一区二区三区在线观看视频 | 国产91片| 国产欧美日韩综合 | 亚洲高潮av | 麻豆精品在线视频 | 深喉口爆一区二区三区 | 久热草 | 可以免费看黄的网站 | 超碰cc | 国产又粗又爽视频 | 销魂奶水汁系列小说 | 国产ts丝袜人妖系列视频 | 国产精品亚洲专区无码牛牛 | 成人午夜毛片 | 成人h片| 久久bb | 亚洲女优视频 | 国产性猛交96 | 精品久久久久久亚洲 | 女性裸体下面张开 | 国产春色 | 欧美xxxx吸乳 | 禁断介护av | 亚洲黄网站在线观看 | 三年中国片在线高清观看 | 在线观看免费高清视频 | 黄色网一级片 | 韩国成人免费视频 | 亚洲国产精品久久久久婷蜜芽 | 欧美123区| 在线综合视频 |