前言

大部份的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(thistypeof(SecondActivity));
4  
5 StartActivity(second);
  • 方法三: 建立Intent, 並透過Intent.PutExtra載入Activity並傳入參數. 程式碼如下:
1 //使用Intent.PutExtra載入Activity並傳入參數
2  
3 var second = new Intent(thistypeof(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 多頁面應用程式開發 (转帖)的更多相关文章

  1. Visual Studio 跨平台開發實戰(3) - Xamarin iOS 多頁面應用程式開發 (转帖)

    前言 在前一篇教學中, 我們學會如何使用Visual Studio 搭配Xcode 進行iOS基本控制項的操作. 但都是屬於單一畫面的應用程式. 這次我們要來練習如何透過Navigation Cont ...

  2. Visual Studio 跨平台開發實戰(4) - Xamarin Android 基本控制項介紹 (转帖)

    前言 不同於iOS, Xamarin 在Visual Studio中針對Android, 可以直接設計使用者介面. 在本篇教學文章中, 筆者會針對Android的專案目錄結構以及基本控制項進行介紹, ...

  3. Visual Studio 跨平台開發實戰(2) - Xamarin.iOS 基本控制項介紹 (转帖)

    前言 在上一篇文章中, 我們介紹了Xamarin 以及簡單的HelloWorld範例, 這次我們針對iOS的專案目錄架構以及基本控制項進行說明. 包含UIButton,, UISlider, UISw ...

  4. Visual Studio跨平台开发Xamarin

    台湾微软的一系列Visual Studio跨平台开发Xamarin的资料,上面还有视频.具体参看 http://www.microsoft.com/taiwan/newsletter/library/ ...

  5. Visual Studio跨平台开发实战(5) - Xamarin Android多页面应用程式开发

    原文 Visual Studio跨平台开发实战(5) - Xamarin Android多页面应用程式开发 前言 大部份的Andr​​oid 都具有实体或虚拟的Back键. 因此在处理多页面应用程式时 ...

  6. Visual Studio跨平台开发实战(4) - Xamarin Android基本控制项介绍

    原文 Visual Studio跨平台开发实战(4) - Xamarin Android基本控制项介绍 前言 不同于iOS,Xamarin 在Visual Studio中针对Android,可以直接设 ...

  7. Visual Studio跨平台开发实战(3) - Xamarin iOS多页面应用程式开发

    原文 Visual Studio跨平台开发实战(3) - Xamarin iOS多页面应用程式开发 前言 在前一篇教学中, 我们学会如何使用Visual Studio 搭配Xcode 进行iOS基本控 ...

  8. Visual Studio跨平台开发实战(2) - Xamarin.iOS基本控制项介绍

    原文 Visual Studio跨平台开发实战(2) - Xamarin.iOS基本控制项介绍 前言 在上一篇文章中, 我们介绍了Xamarin 以及简单的HelloWorld范例, 这次我们针对iO ...

  9. Visual Studio跨平台开发实战(1) - Hello Xamarin!

    原文 Visual Studio跨平台开发实战(1) - Hello Xamarin! 前言 应用程式发展的脚步, 从来没有停过. 从早期的Windows 应用程式, 到网路时代的web 应用程式, ...

随机推荐

  1. CodeForces 687B Remainders Game(数学,最小公倍数)

    题意:给定 n 个数,一个数 k,然后你知道一个数 x 取模这个 n 个的是几,最后问你取模 k,是几. 析:首先题意就看了好久,其实并不难,我们只要能从 n 个数的最小公倍数是 k的倍数即可,想想为 ...

  2. Linux驱动框架之misc类设备驱动框架

    1.何为misc设备 (1)misc中文名就是杂项设备\杂散设备,因为现在的硬件设备多种多样,有好些设备不好对他们进行一个单独的分类,所以就将这些设备全部归属于 杂散设备,也就是misc设备,例如像a ...

  3. swoole多进程操作

    多个任务同时执行 将顺序执行的任务,转化为并行执行(任务在逻辑上可以并行执行) 比如,我们要对已知的用户数据进行判断,是否需要发送邮件和短信,如果需要发送则发送. 不使用多进程时,我们首先判断是否发送 ...

  4. PHP(十)字符串

  5. linux数据库备份

    linux数据库备份 服务端启用二进制日志 如果日志没有启开,必须启用binlog,要重启mysql,首先,关闭mysql,打开/etc/my.cnf,加入以下几行: [mysqld] log-bin ...

  6. [Yii2]yiisoft/yii2 2.0.2 requires bower-asset/jquery 2.1.*@stable | 1.11.*@stable -> no matching package found

    composer require "dektrium/yii2-user:0.9.*@dev" 一直安装失败,提示:Your requirements could not be r ...

  7. Github注册及心得

    注册Github流程: 1.搜索www.github.com 2.有两个按钮sign up(注册).sign in(登入)

  8. WP8.1StoreApp(WP8.1RT)---MessageBox与MessageDialog

    在WP7和WP8中,MessageBox是跟WinForm中一样常用的对话框,但是有一个显著的缺点,就是WP7/8中默认的MessageBox是阻塞线程的.也许是由于这个原因,WP8.1/Win8中采 ...

  9. Cookie的创建与删除

    Cookie 为 Web 应用程序保存用户相关信息提供了一种有用的方法.例如,当用户访问站点时,可以利用 Cookie 保存用户首选项或其他信息,这样,当用户下次再访问站点时,应用程序就可以检索以前保 ...

  10. fatal: Not a git repository (or any parent up to mount point /home)

    问题:fatal: Not a git repository (or any parent up to mount point /home) 解决:git init