Visual Studio 跨平台開發實戰(5) - Xamarin Android 多頁面應用程式開發 (转帖)
前言
大部份的Android 都具有實體或虛擬的Back鍵. 因此在處理多頁面應用程式時, 與先前所介紹的iOS Navigation controller 比較起來會簡單許多.
1. 開啟Visual Studio 並新增Android Application 專案並命名為Lab4-MultiScreen
![]()
2. 在Layout資料夾中新增Second.axml
![]()
在Second.axml 中拖放1個TextView並標示此為第2個Activity
![]()
2. 在專案底下新增一個SecondActivity.cs. 在OnCreate事件中撰寫以下程式碼:
1 |
SetContentView(Resource.Layout.Second); |
3. 開啟Activity1.cs, 在class name的地方按滑鼠右鍵=>重構=>重新命名. 將類別名稱改為FirstActivity. 記得在方案總管中的檔名也一併改為FirstActivity.cs
![]()
4. 開啟Main.axml, 在畫面中放置1個Button並指定Text屬性值為”Load Second Activity”並將id 的屬性值變更為”@+id/ShowSecond”
5. 開啟FirstActivity.cs, 在OnCreate事件中撰寫以下程式碼:
01 |
//載入頁面 |
02 |
03 |
SetContentView(Resource.Layout.Main); |
04 |
05 |
//宣告並取得按鈕物件, 並在按鈕的click事件處理中載入SecondActivity |
06 |
07 |
Button button = FindViewById< Button >(Resource.Id.showSecond); |
08 |
09 |
button.Click += delegate |
10 |
11 |
{…….按鈕處理函式} |
Button的click處理函式中, 我們將使用3種方法來載入SecondActivity.
- 方法一: 使用內建的StartActivity方法, 程式碼如下:
1 |
//呼叫其他Activity的第一種方法(隱含的建立Intent) |
2 |
3 |
StartActivity(typeof(SecondActivity)); |
- 方法二: 建立Intent, 然後使用StartActivity載入其他SecondActivity. 程式碼如下:
1 |
//呼叫其他Activity的第二種方法, 建立Intent, 然後使用StartActivity載入其他Activity |
2 |
3 |
var second = new Intent(this, typeof(SecondActivity)); |
4 |
5 |
StartActivity(second); |
- 方法三: 建立Intent, 並透過Intent.PutExtra載入Activity並傳入參數. 程式碼如下:
1 |
//使用Intent.PutExtra載入Activity並傳入參數 |
2 |
3 |
var second = new Intent(this, typeof(SecondActivity)); |
4 |
5 |
second.PutExtra("FirstData", "Data from FirstActivity"); |
6 |
7 |
StartActivity(second); |
上述的3種方式, 第1個跟第2個是一樣的, 使用第1種方式, 會隱含建立一個Intent物件。
6. 執行專案並檢視結果.
7. 透過上述的第3個方法, 可以像QueryString般傳遞參數到下一個Activity. 現在我們開啟SecondActivity.cs. 透過Intent的GetStringExtra方法來取得參數的值. 在Oncreate方法中撰寫以下程式碼:
01 |
//載入頁面 |
02 |
03 |
SetContentView(Resource.Layout.Second); |
04 |
05 |
//宣告並取得TextView物件 |
06 |
07 |
var label = FindViewById<textview>(Resource.Id.screen2Label); |
08 |
09 |
//透過Intent.GetStringExtra取得從前一個Activity所傳來的訊息 |
10 |
11 |
label.Text = Intent.GetStringExtra("FirstData") ?? "Data not available";</textview> |
在上述程式碼中, 我們透過Intent的GetStringExtra(“參數名稱”)來取得字串型別的參數. 事實上還可以透過類似的方法取得不同型別的參數值. 如下圖所示:
![]()
而??陳述式則是用來判斷是否為Null的方便寫法. 若取出的值為Null則顯示後面的字串.
8. 執行專案並檢視結果, 如下圖所示
![]()
結語
在本篇文章中, 我們介紹Android 應用程式在多頁面中的切換, 相較於iOS, Android 對於多頁面的處理較為方便. 另外在Android中也提供Tab控制項在多頁面之間進行切換.
Visual Studio 跨平台開發實戰(5) - Xamarin Android 多頁面應用程式開發 (转帖)的更多相关文章
- Visual Studio 跨平台開發實戰(3) - Xamarin iOS 多頁面應用程式開發 (转帖)
前言 在前一篇教學中, 我們學會如何使用Visual Studio 搭配Xcode 進行iOS基本控制項的操作. 但都是屬於單一畫面的應用程式. 這次我們要來練習如何透過Navigation Cont ...
- Visual Studio 跨平台開發實戰(4) - Xamarin Android 基本控制項介紹 (转帖)
前言 不同於iOS, Xamarin 在Visual Studio中針對Android, 可以直接設計使用者介面. 在本篇教學文章中, 筆者會針對Android的專案目錄結構以及基本控制項進行介紹, ...
- Visual Studio 跨平台開發實戰(2) - Xamarin.iOS 基本控制項介紹 (转帖)
前言 在上一篇文章中, 我們介紹了Xamarin 以及簡單的HelloWorld範例, 這次我們針對iOS的專案目錄架構以及基本控制項進行說明. 包含UIButton,, UISlider, UISw ...
- Visual Studio跨平台开发Xamarin
台湾微软的一系列Visual Studio跨平台开发Xamarin的资料,上面还有视频.具体参看 http://www.microsoft.com/taiwan/newsletter/library/ ...
- Visual Studio跨平台开发实战(5) - Xamarin Android多页面应用程式开发
原文 Visual Studio跨平台开发实战(5) - Xamarin Android多页面应用程式开发 前言 大部份的Android 都具有实体或虚拟的Back键. 因此在处理多页面应用程式时 ...
- Visual Studio跨平台开发实战(4) - Xamarin Android基本控制项介绍
原文 Visual Studio跨平台开发实战(4) - Xamarin Android基本控制项介绍 前言 不同于iOS,Xamarin 在Visual Studio中针对Android,可以直接设 ...
- Visual Studio跨平台开发实战(3) - Xamarin iOS多页面应用程式开发
原文 Visual Studio跨平台开发实战(3) - Xamarin iOS多页面应用程式开发 前言 在前一篇教学中, 我们学会如何使用Visual Studio 搭配Xcode 进行iOS基本控 ...
- Visual Studio跨平台开发实战(2) - Xamarin.iOS基本控制项介绍
原文 Visual Studio跨平台开发实战(2) - Xamarin.iOS基本控制项介绍 前言 在上一篇文章中, 我们介绍了Xamarin 以及简单的HelloWorld范例, 这次我们针对iO ...
- Visual Studio跨平台开发实战(1) - Hello Xamarin!
原文 Visual Studio跨平台开发实战(1) - Hello Xamarin! 前言 应用程式发展的脚步, 从来没有停过. 从早期的Windows 应用程式, 到网路时代的web 应用程式, ...
随机推荐
- 怎样将word中的图片插入到CSDN博客中
目前大部分的博客作者在用Word写博客这件事情上都会遇到以下3个痛点: 1.所有博客平台关闭了文档发布接口,用户无法使用Word,Windows Live Writer等工具来发布博客.使用Word写 ...
- 超详细JSON解析步骤
JSON简介 JAVAScript Object Notation是一种轻量级的数据交换格式 具有良好的可读和便于快速编写的特性. 业内主流技术为其提供了完整的解决方案(有点类似于正则表达式 ,获得了 ...
- MySQL—练习
前面学习了MySQL的语句的基本用法,这里就开始做一些MySQL练习,这套题目一共45题,属于比较简单的,初学先试着做这个. 参考链接:https://www.cnblogs.com/SJP666/p ...
- iptables命令(备忘)
语法 iptables(选项)(参数) 选项 -t<表>:指定要操纵的表: -A:向规则链中添加条目: -D:从规则链中删除条目: -i:向规则链中插入条目: -R:替换规则链中的条目: ...
- SOCK开发之---TCP/IP简介
在开发通信程序之前,都要先确定这些程序相互通信所使用的协议(protocol),在深入设计前,我们都需要先从高层次来判断通信由哪个程序发起以及相应在何时产生. 举例来说,一般认为web服务器是一个长时 ...
- zabbix监控cpu jumps
cpu监控图形分为三种 cpu jumps cpu突发 包含 context switches per second 进程线程切换 interrupts per second 每秒的中断次数 cpu ...
- [转]RTH试用手记之“偶发信号观测”
年初,罗德与施瓦茨公司(Rohde & Schwarz)推出了第一款的手持示波器,从指标上看,该示波器打破了传统手持器功能简单.指标水平低.结构粗糙的印象,取而代之达到了主流台式数字示波器的性 ...
- 原创:MVC 5 实例教程(MvcMovieStore 新概念版:mvc5.0,EF6.01) - 3、创建项目
说明:MvcMovieStore项目已经发布上线,想了解最新版本功能请登录 MVC 影视(MvcMovie.cn) 进行查阅.如需转载,请注明出处:http://www.cnblogs.com/Dod ...
- backbone.js 学习笔记
Backbone.Model 模型.相当于表定义,定义一个表当中有的列 defaults:设置属性的默认值 initialize():初始化函数 get(key):获取属性值 set(data):设置 ...
- ce+od无法同时附加进程的问题
CE+OD无法附加游戏进程的破解方法 来吧 别在为这烦恼了 其实看过 windows 核心编程那本书的人都知道 计算机编程领域 那些所谓的游戏保护 真的只是为难菜鸟而已,对于大鸟基本不起作用. 游戏无 ...