[Xamarin] 透過StartActivityForResult傳值回來(转贴)
上一篇文章(開啟另外一個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傳值回來(转贴)的更多相关文章
- [Xamarin] 透過 intent-filter 來接管 http ,製作偽瀏覽器 (转帖)
使用Android 的朋友一定對這畫面不陌生在開啟網址的時候,或是Youtube連結的時候,因為Android 發現,你手機安裝的App有哪些可以支援這些東西的瀏覽 所以,就可以使用甚麼東西來進行開啟 ...
- [Xamarin] 透過Native Code呼叫 JavaScript function (转帖)
今天我們來聊聊關於如何使用WebView 中的Javascript 來呼叫 Native Code 的部分 首先,你得先來看看這篇[Xamarin] 使用Webview 來做APP因為這篇文章至少講解 ...
- [Xamarin] 透過WebClient跟網路取得資料 (转帖)
之前寫過一篇文章,關於在Android上面取得資料 透過GET方式傳資料給Server(含解決中文編碼問題) 我們來回顧一下 Android 端的Code: 有沒有超多,如果是在Xaramin下面,真 ...
- [Xamarin] 透過 IsolatedStorageFile儲存資料(转帖)
開發手機App通常都會遇到想要儲存資料的,舉個例來說,像是 (圖片來源:http://docs.xamarin.com/guides/android/application_fundamentals/ ...
- 使用 ssmtp 於 shell 透過 Gmail 寄信
有很多程式於 bash shell 執行, 執行完要自動寄信出去, 但是最近都被 Google 退信, 最好的方法是透過 Gmail 直接寄信. 本來是要另外寫隻 script 來做這種事, 剛剛發現 ...
- (STM32F4) 精準的Delay不透過Timer
從一個厲害的國外工程師看來的delay寫法,使用while loop會使用幾個指令去計算,可能會需要多少時間. while(variable--); 這行代碼執行一次預估會消耗MCU 4 clock ...
- [C#] 與Android共舞–透過GET方式傳資料給Server(含解決中文編碼問題) (转帖)
上一篇文章分享了透過POST 方式傳資料回Server,這一篇來談談有關於透過GET的方式傳遞 首先,如我預期的一樣,透過網址傳遞,會產生編碼問題,這邊我就順代解掉,希望有碰到的人 可以不用為此煩惱. ...
- [SQL]透過redgate SQL Monitor 來找出 ASYNC_NETWORK_IO 問題
原文:[SQL]透過redgate SQL Monitor 來找出 ASYNC_NETWORK_IO 問題 最近因為在查一個SQL的效能問題,透過 sys.dm_os_wait_stats 來取得To ...
- 透過手機 App 在 OpenELEC(XBMC)中輸入中文
這裡介紹如何使用手機 App 在沒有中文輸入法的 OpenELEC(XBMC)中輸入中文字. OpenELEC(XBMC)雖然有內建中文語系,但是卻沒有中文的輸入法,沒辦法直接輸入中文字,這對於一般家 ...
随机推荐
- 网络中的A、B、C类地址
1.A类ip地址(1.0.0.0到126.255.255.255) A类地址只有第一个8位表示网络地址,最高位一定为0,所以A类地址的网络号范围可以为:64+32+16+8+4+2+1=127,也就是 ...
- linux每天一小步---ls命令详解
1 命令功能: 列出当前目录下或者指定目录下的所有文件和目录,ls是list的缩写. 2 命令语法: ls [选项] [目录名] #注:[]中的内容为非必选项 3 命令选项: -a 列出目录下 ...
- Xcode使用心得01:断点中断问题和调整编译目标[转]
在obj-c系列博文里,我们粗浅的介绍了obj-c的一些语法以及F库中的一些标准类的使用,但是实际编写拿得出手的APP还是得老老实实在os x上用Xcode写啊!最近上网无意中发现还有支持os x和i ...
- 23 DesignPatterns学习笔记:C++语言实现 --- 2.7 Proxy
23 DesignPatterns学习笔记:C++语言实现 --- 2.7 Proxy 2016-07-18 (www.cnblogs.com/icmzn) 模式理解
- 目前主流编译器对C++11特性的支持情况
目前主流编译器对C++11特性的支持情况 1. GCC编译器(从编译器GCC4.8.X的版本完全支持) (1)目前C++11特性,之前成为C++0X特性,从GCC4.3的后续版本中逐步对C++11进行 ...
- access建立sql查询语句运行查询语句
1.打开一个Access数据库文件 2.点击“创建”标签中的“查询设计”,会弹出一个“显示表”的对话框,点击“关闭”将其关闭 3.这时会有一个名为“查询*”的窗口,还不能输入SQL语句 4.点击左上角 ...
- Android-Sqlite-SQL操作增删改查
一想到Android到数据库,只需要想到一个类 SQLiteOpenHelper,然后写一个类继承 SQLiteOpenHelper,重写构造方法,对数据库进行配置 public class MySQ ...
- 关于createTextRange和createRange的一些用法【转】
一.返回createTextRange的text和htmlText <mce:script language="javascript"><!--function ...
- 常用脚本--SQL Server获取OS日志
--=================================================== --SQL Server获取OS日志: ), ), ), ) select @start_d ...
- C#语言各个版本特性(二)
二.排序Product 1.按名称对产品进行排序,以特定顺序显示一个列表的最简单方式就是先将列表排序,再遍历并显示其中的项. C#1.1 使用IComparer对ArrayList进行排序 produ ...