上一篇文章(開啟另外一個Activity 並且帶資料),提到了開啟一個新的Activity ,我們將值透過intent 帶到下個Activity

但是,如果我們開啟的Actrivity其實是有一個任務的,他必須要回傳值回來,讓父親可以知道一些訊息可以帶回來,我們該如何做

這次案例首先主畫面為.

點下按鈕後,就會開啟 LayoutAskQuestion.axml


然後就會回到主要的畫面,並且Toast剛剛選擇的結果.

內容我就寫在code  註解裡..

主畫面 Main.axml :

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <Button
        android:id="@+id/btnAskQuestion"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="詢問問題" />
</LinearLayout>

Activity1.cs:

using Android.App;
using Android.Content;
using Android.Widget;
using Android.OS;
 
namespace TestStartActivityForResult
{
    [Activity(Label = "TestStartActivityForResult", MainLauncher = true, Icon = "@drawable/icon")]
    public class Activity1 : Activity
    {
 
        protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);
 
            SetContentView(Resource.Layout.Main);
 
            
            var btnAskQuestion = FindViewById<Button>(Resource.Id.btnAskQuestion);
            //詢問的按鈕按下後
            btnAskQuestion.Click += delegate
            {
                //因為期許他將回傳值,所以使用StartActivityForResult 叫起
                //第二參數為 requestcode 這邊主要是設定讓 OnActivityResult 可以判斷當初發出的動機
                StartActivityForResult(typeof(ActivityAskQuestion), 1);
            };
        }
 
        /// <summary>
        /// 當有 AcrivityForReult Activity 被呼叫且結束後
        /// </summary>
        /// <param name="requestCode"></param>
        /// <param name="resultCode"></param>
        /// <param name="data"></param>
        protected override void OnActivityResult(int requestCode, Result resultCode, Intent data)
        {
            base.OnActivityResult(requestCode, resultCode, data);
 
            //如果當初的發的requestCode =1
            if (requestCode == 1 && resultCode == Result.Ok)
            {
                Toast.MakeText(this, "選取結果(OnActivityResult):" + data.GetStringExtra("hero"), ToastLength.Short).Show();
            }
        }
    }
}
 

被呼叫端 LayoutAskQuestion.axml :

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <Button
        android:id="@+id/btnBlackWidow"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="黑寡婦" />
    <Button
        android:id="@+id/btnIronMan"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="鋼鐵人" />
</LinearLayout>


ActivityAskQuestion.cs:

using Android.App;
using Android.Content;
using Android.OS;
using Android.Widget;
 
namespace TestStartActivityForResult
{
    [Activity(Label = "Son Activity")]
    public class ActivityAskQuestion : Activity
    {
        protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);
            SetContentView(Resource.Layout.LayoutAskQuestion);
 
            var btnBlackWidow = FindViewById<Button>(Resource.Id.btnBlackWidow);
            btnBlackWidow.Click += delegate
            {
                //開啟一個新的intent
                var intent = new Intent(this, typeof(Activity1));
                //放入一個key 為hero 值為 黑寡婦
                intent.PutExtra("hero", "黑寡婦");
                //狀態設為OK
                SetResult(Result.Ok, intent);
                //呼叫後將關閉此視窗
                Finish();
            };
 
            var btnIronMan = FindViewById<Button>(Resource.Id.btnIronMan);
            btnIronMan.Click += delegate
            {
                var intent = new Intent(this, typeof(Activity1));
                intent.PutExtra("hero", "鋼鐵人");
                SetResult(Result.Ok, intent);
                Finish();
            };
 
        }
    }
}

呼叫結果..

[Xamarin] 透過StartActivityForResult傳值回來(转贴)的更多相关文章

  1. [Xamarin] 透過 intent-filter 來接管 http ,製作偽瀏覽器 (转帖)

    使用Android 的朋友一定對這畫面不陌生在開啟網址的時候,或是Youtube連結的時候,因為Android 發現,你手機安裝的App有哪些可以支援這些東西的瀏覽 所以,就可以使用甚麼東西來進行開啟 ...

  2. [Xamarin] 透過Native Code呼叫 JavaScript function (转帖)

    今天我們來聊聊關於如何使用WebView 中的Javascript 來呼叫 Native Code 的部分 首先,你得先來看看這篇[Xamarin] 使用Webview 來做APP因為這篇文章至少講解 ...

  3. [Xamarin] 透過WebClient跟網路取得資料 (转帖)

    之前寫過一篇文章,關於在Android上面取得資料 透過GET方式傳資料給Server(含解決中文編碼問題) 我們來回顧一下 Android 端的Code: 有沒有超多,如果是在Xaramin下面,真 ...

  4. [Xamarin] 透過 IsolatedStorageFile儲存資料(转帖)

    開發手機App通常都會遇到想要儲存資料的,舉個例來說,像是 (圖片來源:http://docs.xamarin.com/guides/android/application_fundamentals/ ...

  5. 使用 ssmtp 於 shell 透過 Gmail 寄信

    有很多程式於 bash shell 執行, 執行完要自動寄信出去, 但是最近都被 Google 退信, 最好的方法是透過 Gmail 直接寄信. 本來是要另外寫隻 script 來做這種事, 剛剛發現 ...

  6. (STM32F4) 精準的Delay不透過Timer

    從一個厲害的國外工程師看來的delay寫法,使用while loop會使用幾個指令去計算,可能會需要多少時間. while(variable--); 這行代碼執行一次預估會消耗MCU 4 clock ...

  7. [C#] 與Android共舞–透過GET方式傳資料給Server(含解決中文編碼問題) (转帖)

    上一篇文章分享了透過POST 方式傳資料回Server,這一篇來談談有關於透過GET的方式傳遞 首先,如我預期的一樣,透過網址傳遞,會產生編碼問題,這邊我就順代解掉,希望有碰到的人 可以不用為此煩惱. ...

  8. [SQL]透過redgate SQL Monitor 來找出 ASYNC_NETWORK_IO 問題

    原文:[SQL]透過redgate SQL Monitor 來找出 ASYNC_NETWORK_IO 問題 最近因為在查一個SQL的效能問題,透過 sys.dm_os_wait_stats 來取得To ...

  9. 透過手機 App 在 OpenELEC(XBMC)中輸入中文

    這裡介紹如何使用手機 App 在沒有中文輸入法的 OpenELEC(XBMC)中輸入中文字. OpenELEC(XBMC)雖然有內建中文語系,但是卻沒有中文的輸入法,沒辦法直接輸入中文字,這對於一般家 ...

随机推荐

  1. apicloud 和 微信小程序,你会用哪 个?

    微信 小程序开始火了,app跨平台的革命再次高涨,不得不说,不用再担心android和ios双版本开发成本,及h5的开发 和apicloud一样,不需要关注平台问题,只需要关注前端js.css就能大a ...

  2. jquery.fn.extend() 与 $.jquery 作用及区别

    原文:http://www.cnblogs.com/liu-l/p/3928373.html jQuery.extend()这个方法,主要是用来拓展个全局函数啦,例如$.ajax()这种,要不就是拓展 ...

  3. nohup、&、setsid、fork和fg、bg究竟有啥区别?

    目录 目录 1 1. 名词解释 1 2. 什么是守护进程? 2 2.1. 后台运行 2 2.2. 解释关系 2 3. 以"&"方式运行有何问题? 2 4. fork 2 5 ...

  4. 三种调用WCF服务的代码

    wsHttpBinding,Massage UserName认证 static void Main(string[] args) { //使用服务引用方式生成的Client调用服务,使用自动生成的配置 ...

  5. Hello_Area_Description 任务三:Project Tango采集区域描述数据

    Permission Dialogs for Users in Java在Java中用户使用的权限对话框 Tango works by using visual cues from the devic ...

  6. Android-Sqlite-OOP方式操作增删改查

    之前写的数据库增删改查,是使用SQL语句来实现的,Google 就为Android开发人员考虑,就算不会SQL语句也能实现增删改查,所以就有了OOP面向对象的增删改查方式 其实这种OOP面向对象的增删 ...

  7. linux的定制和发布(一)

    如果总是仰视高山,就会挫伤我们攀登的勇气,使我们固步自封.我们需要做的就 是迈开自己的脚步,踏出第一步,let's go!       Linux的裁剪一般有三种方法: 1.以一个已经安装好的系统为基 ...

  8. 在 Docker 上运行一个 RESTful 风格的微服务

    tags: Microservice Restful Docker Author: Andy Ai Weibo:NinetyH GitHub: https://github.com/aiyanbo/d ...

  9. JaveScript初学-基础语法

    一.JavaScript数据类型 JavaScript中,一切皆对象. JavaScript拥有动态类型,使用var关键字(也可以不必)进行声明——字符串.数字.布尔.对象.Null.Undefine ...

  10. c语言第六次作业---结构体&文件

    1.本章学习总结 1.1思维导图 1.2学习体会 这次应该是本学期最后一次博客了,总结一下这个学期的学习,一开始就基础薄弱还一直畏难一直懒惰,不想去解决问题导致后面问题越来越多就觉得学习越来越难,后面 ...