多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > 綜合技術 > 第四章 Android開發三大基石―Activity、Service和Handler(3)

第四章 Android開發三大基石―Activity、Service和Handler(3)

來源:程序員人生   發布時間:2015-01-30 08:36:34 閱讀次數:3884次

4.1.5Activity交互―Activity跳轉

1般的,我們的利用程序都不會簡單到只有1個界面,而是會有很多個界面,這個時候我們就會創建多個Activity,然后根據業務邏輯在多個Activity之間進行跳轉。

我們可以用切換Layout的方式進行手機頁面間的轉換。但是如果要轉換的頁面其實不單單只是背景、色彩或文字內容的不同,而是需要對全部Activity進行置換,并將主控權交給新的Activity,那就不是僅靠改變Layout就可以完成了,我們需要在這些Activity中進行跳轉及數據傳遞。

Activity跳轉實現起來也非常簡單,可使用Intent來實現利用程序內部的Activity跳轉。我們比較經常使用的有兩種。1種是單純的跳轉,即跳轉完以后就不管跳轉前的Activity了,另外一種是跳轉到下1個Activity,并等待它的返回結果進行相干的操作。

下面,我們以1個簡單的例子來加以說明。

1)1般的跳轉

一樣的,我們新建1個NextActivity.java類繼承自Activity,它的布局文件中只有1個TextView,顯示的內容為“This is Activity 2”。

假定我們剛剛創建的MyActivity.java為當前Activity,NextActivity.java為下1個要跳轉Activity。我們在main.xml布局文件中,增加1個按鈕,點擊后實現從MyActivity.java跳轉到NextActivity.java的效果,布局文件代碼以下:

<?xml version="1.0" encoding="utf⑻"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:orientation="vertical"

    android:layout_width="fill_parent"

    android:layout_height="fill_parent" >

<TextView 

        android:layout_width="fill_parent"

        android:layout_height="wrap_content"

        android:text="This is Activity 1"/>

<Button

        android:id="@+id/my_button"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:text="跳轉"/>

</LinearLayout>

 

然后,我們來看看MyActivity中的代碼:

private Button btn;

   

    @Override

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

        btn = (Button)findViewById(R.id.my_button);

        btn.setOnClickListener(new View.OnClickListener() {

            

             @Override

             public void onClick(View v) {

                 Intent intent = new Intent();

                 intent.setClass(MyActivity.this, NextActivity.class);

                 startActivity(intent);

             }

        });

    }

 

我們運行1下來看看效果,如圖4⑷所示:

圖4⑷ Activity跳轉前

 

下面,我們點擊1下按鈕。這個時候,運行出錯了,毛病緣由是“android.content.ActivityNotFoundException”,這是由于我們在AndroidManifest.xml文件中沒有配置NextActivity,我們簡單配置1下:

<activity android:name=".NextActivity" android:label="@string/app_name"/>

 

現在再點擊按鈕后,效果如圖4⑸所示:

圖4⑸ Activity跳轉后

 

可以看到,跳轉已成功了。

--------------------------------------------
試著放個廣告 現在沒工作 要生存 沒辦法
平安陸金所 隸屬于平安團體的p2p平臺
年投資回報率7%-9% 是替換銀行理財的首選
個人經驗教訓 推薦投資安鑫或有擔保的彩虹項目
不要投資安e 那個幾近沒法轉讓 想提早提現非常困難
注冊鏈接 http://affiliate.lufax.com/action/36XBU
用此鏈接注冊 你我都會有幾10元的額外現金嘉獎
--------------------------------------------

2)跳轉并返回值

可能很多時候,1般的跳轉其實不能滿足我們的需求。例如,我們填好1個表單,提交以后出錯了,我們回退以后想保存之前已填的數據,這樣的話,僅僅只是簡單的跳轉就不能滿足了。

下面,我們來看另外一種跳轉方式。在這個例子中,我們要實現從MyActivity跳轉到NextActivity,并當MyActivity接收到NextActivity返回來的“信息”時,MyActivity中顯示消息,MyActivity中跳轉代碼以下:

Intent intent = new Intent();
intent.setClass(MyActivity.this, NextActivity.class);

startActivityForResult(intent, 1);

 

這樣就從MyActivity跳轉到了NextActivity,并傳入了1個要求碼“1”。同時,我們需要在MyActivity.java中重寫Activity中的onActivityResult方法,用于接收NextActivity.java中的返回碼,代碼以下:

@Override

    protected void onActivityResult(int requestCode, int resultCode, Intent data) {

        switch(resultCode){

        case RESULT_OK:

             // 當返回碼為RESULT_OK時進行相干操作

        if(requestCode == 1){

                Toast.makeText(Char4Activity.this, "返回已收到", Toast.LENGTH_LONG).show();

            }

             break;

        }

}

 

這里需要注意的是resultCode相當于1個開關,當NextActivity.java中的開關打開時, 就會進行相應的處理了。

修改NextActivity的onCreate方法:

@Override

protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.next);

    setResult(RESULT_OK);

    finish();

}

 

下面,我們來看看效果,如圖4⑹所示:

圖4⑹ Activity跳轉后返回值

 

4.1.6 Activity中數據傳遞

很多時候,我們不是單單只進行Activity跳轉,而是在進行Activity跳轉的同時傳遞數據,這里我們就能夠利用Android.os.Bundle對象封閉數據的能力,將所要傳遞的數據或參數通過Bundle來傳遞不同Activity間的數據。還以之前的代碼為例,我們要實現從當前Activity跳轉到下1個Activity的同時,并傳入1個double型參數,1個String型參數,在MyActivity.java中代碼以下:

Intent intent = new Intent();
intent.setClass(MyActivity.this, NextActivity.class);

Bundle bundle = new Bundle();

double height = 1.74;

String name = "li lei";

bundle.putDouble("height", height);

bundle.putString("name",name);

intent.putExtras(bundle);
startActivity(intent);

 

有1方發送參數,就必定有1方要接收參數。它的接收實現起來也很簡單,在NextActivity.java中代碼以下:

Bundle bundle = NextActivity.this.getIntent().getExtras();

double height = bundle.getDouble("height");

String name = bundle.getString("name");

 

經驗分享:

需要注意的是,當履行startActivityForResult時,requestCode值需要>=0,否則,startActivityForResult就變成了 startActivity;另外,有這樣1種情況,假定現在有兩個Activity:A和B。Activity A使用startActivityForResult跳轉到Activity B,跟蹤后發現要跳轉的Activity B并沒有被立即啟動,而是直接履行了Activity A的onActivityResult方法,緣由是把要啟動的Activity B的launchmode設置成singleTask了,這個時候它會先履行onActivityResult方法,然后再啟動activity,所以就得不到我們想要的結果。

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 欧美一级手机免费观看片 | 免费成年人在线观看视频 | xxx日韩 | 午夜私人影院在线观看 视频 | 99久久这里只精品麻豆 | 中文字幕在线观看亚洲 | 看大片免费网站 | 亚洲最大在线视频 | 午夜久久久久久 | 精品久久久久久中文字幕欧美 | 日本wwww视频| 久久91综合国产91久久精品 | 精品成人乱色一区二区 | 在线国产视频观看 | 国产一区二区网站 | 国产亚洲福利 | 国产成人精品午夜在线播放 | 91国内揄拍国内精品对白不卡 | 日本一区二区精品88 | 亚洲最大成人在线 | 亚洲精品一区二区久久 | 国产精品福利片免费看 | 亚洲人和日本人jzz护士 | 中文字幕第一页亚洲 | www毛片com| 亚洲欧美另类专区 | 久久精品九九亚洲精品天堂 | 德国free性video极品 | 国产在线欧美日韩精品一区二区 | 福利第一页 | 欧美伦理三级在线播放影院 | 亚洲第一在线视频 | 亚洲福利在线看 | 日本中文字幕免费 | 中日韩欧美在线观看 | 色综合久久综合欧美综合网 | 国内自拍成人网在线视频 | xxxx日本高清 | 亚洲综合一区二区精品久久 | 五月婷婷视频在线观看 | 亚洲一区二区三区精品视频 |