久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標題: 在不同的Activity之間傳遞數據 [打印本頁]

作者: liuyy    時間: 2015-1-12 01:12
標題: 在不同的Activity之間傳遞數據
    在Android中傳遞數據的方法非常多,主要學習了四種:
    1.通過Intent傳遞數據
    2.通過靜態變量傳遞數據
    3.通過剪切板傳遞數據
    4.通過全局變量傳遞數據
一、通過Intent傳遞數據
    這是最常用的一種數據傳遞的方法。通過Intent.putExtra()方法可以將簡單類型的數據或者可序列化的對象保存在Intent對象中,然后在目標Activity中使用getXxx(getInt、getString等)方法獲得這些數據。
    在當前的Activity代碼中:
    Intent intent = new Intent();
    intent.setClass(TransmitDataMainActivity.this,activity1.class);//TransmitDataMainActivity是目前的窗口,activity是目標窗口
                                            intent.putExtra("Name", "張三");
                                            intent.putExtra("Age", "22");
                                            intent.putExtra("Sex", "男");
                                            startActivity(intent);//開始跳轉
    在目標Activity代碼中:
    String Name = intent.getStringExtra("Name");
    String Age    = intent.getStringExtra("Age");
    String Sex    = intent.getStringExtra("Sex");
二、使用靜態變量傳遞數據
    雖然使用Intent對象可以很方便的傳遞數據,這也是官方推薦的方式,但是Intent有他的局限性,Intent無法傳遞不能序列化的對象,也就是沒有實現java.io.Serializable接口的類創建的對象。例如,圖像Bitmap對象就無法通過Intent傳遞。
    可以在使用靜態變量進行傳遞數據。如在目標Activity(如Activity2)中:
    public static String Name;
    public static String Age;
    public static String Sex;
    在其他的Activity中便可以使用Activity2.Name、Activity2.Age、Activity.Sex就可以訪問來實現數據的傳遞。
三、使用剪切板傳遞數據
    由于剪切板只能存儲簡單類型數據以及可序列化的對象,對于某些不可序列化的對象如果可以將其轉化為字節流,也可以將這些對象保存在剪切板中。
四、使用全局對象傳遞數據
    雖然使用靜態變量可以傳遞任意類型的數據,但是官方不建議這么做。如果在類中大量的使用靜態變量(尤其是使用很占資源的變量,如Bitmap對象)可能會導致內存溢出,而且還可能因為靜態變量在很多類中出現而造成代碼難以維護和混亂的狀況。全局對象可以完全取代靜態變量。
    Android中的 全局對象所對應的類可以從android.app.Application繼承。下面就是一個典型的全局類。
    public class MyApp extends Application
    {
        public String country;
        public Data data = new Data();
    }
    在編寫完全局類之后,還需要通過<application>在AndroidManifext.xml中注冊。
    然后通過Activity.getApplicationContext()方法可以獲得全局對象。
    MyApp app = (MyApp) getApplicationContext();
    app.country = "中國";
    app.data.id  = "123";
    app.data.name = "人民";


作者: liuyy    時間: 2015-1-12 01:13
    在實驗室呆了一天,看了Android的開發視頻教程,然后寫程序,改程序。
    今天粗略的學習了Activity的生命周期,還有Activity的布局。
    收獲:
    1.每一個控件的android:layout_width和android:layout_height都要設置,而且可以直接設置大小,不一定局限于給定的三個參數,fill_parent、match_matchparent、wrap_content。
    2.通過findViewById(int)方法獲取控件的時候一定要注意是否已經使用了setContentView()關聯了布局文件,而且只能獲取當前View的控件,否則就會得到了Null,然后后面再調用對象方法的時候就會出現錯誤。
    3.聲明周期函數OnStop()只有當一個Activity2完全遮擋住了Activity1的時候,才會調用Actitvity1的onStop()方法。
    4.對于字符資源最好統一的在res/values/strings.xml中定義,這樣如果更改字符資源的時候就可以牽一發動全身,不需要逐個的更改。
    5.建立工程文件的時候選擇的最低版本SDK會對代碼產生影響,因為有的API只能在高版本中使用!
    6.AndroidManifest.xml不可以更改名稱,每一個Activity都要在這個文件中進行注冊。而且在此文件中可以聲明哪個Activity為主窗口,住過設置了多個主窗口,安裝程序的時候就會分別產生相應的圖標。
    感想:難點不在于功能的代碼實現,而在于布局XML文件的編寫,弄出來一個好看的界面真心不容易,可能是我還是菜鳥的原因吧,干什么都不容易啊!下次再用什么App的時候別再噴了,其實做什么都是不容易的,尊重別人的勞動成果。
    下一步計劃:繼續學習XML文件布局,以及常用控件的使用,先把布局練習好,功能實現不急。




歡迎光臨 (http://m.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 精品久久久久久久 | 欧美一区在线视频 | 美女张开腿 | 韩日一级片 | 黄色片视频 | 国产成人av网站 | 天天干天天操天天 | 欧美激情免费 | www.亚洲国产 | 国产成人精品一区二区 | av大片在线观看 | 亚洲男人天堂网 | 天天操天天干天天爽 | 中文字幕在线观 | 一区二区国产精品 | 日本伊人网 | 日韩一区二区在线观看视频 | 成人免费网站 | 免费看黄色av | av在线天堂| www国产在线观看 | 免费毛片基地 | 中文在线观看视频 | 亚洲精品1| 欧美成在线 | 亚洲视频中文字幕 | 中文字幕免费看 | 欧美日韩小视频 | 亚洲综合伊人 | 欧美日韩在线一区二区 | 国产精品亚洲精品 | 国产一区二区视频在线 | a一级黄色片 | 精品国产一区二 | 在线a视频| 亚洲综合另类 | 成人免费高清视频 | 国产高清视频在线播放 | 免费黄色一级 | 黄色大片免费观看 | 久久av红桃一区二区小说 |