前言

大部份的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 = newIntent(this,typeof(SecondActivity));
4  
5 StartActivity(second);
  • 方法三: 建立Intent, 并通过Intent.PutExtra载入Activity并传入参数. 代码如下:
1 //使用Intent.PutExtra载入Activity并传入参数
2  
3 var second = newIntent(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(Resource.Id.screen2Label);
08  
09 //通过Intent.GetStringExtra取得从前一个Activity所传来的讯息
10  
11 label.Text = Intent.GetStringExtra("FirstData") ??"Data not available";

在上述代码中, 我们通过Intent的GetStringExtra(“参数名称”)来取得字串型別的参数. 事实上还可以通过类似的方法取得不同型別的参数值. 如下图所示:

而??陈述式则是用来判断是否为Null的方便写法. 若取出的值为Null则显示后面的字串.

8. 执行专案并检视结果, 如下图所示

结语

在本篇文章中, 我们介绍Android 应用程序在多页面中的切换, 相较于iOS, Android 对于多页面的处理较为方便. 另外在Android中也提供Tab控制项在多页面之间进行切换.

Visual Studio跨平台开发(5):Xamarin Android多页面应用开发的更多相关文章

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

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

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

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

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

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

  4. Visual Studio跨平台开发(1):Hello Xamarin!

    前言 应用程序发展的脚步, 从来没有停过. 从早期的Windows 应用程序, 到网络时代的web 应用程序, 再到近几年相当盛行的行动装置应用程序(Mobile Application), 身为C# ...

  5. Visual Studio跨平台开发Xamarin

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

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

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

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

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

  8. Visual Studio 跨平台開發實戰(1) - Hello Xamarin! (转帖)

    前言 應用程式發展的腳步, 從來沒有停過. 從早期的Windows 應用程式, 到網路時代的web 應用程式, 再到近幾年相當盛行的行動裝置應用程式(Mobile Application), 身為C# ...

  9. Visual Studio 2017启动x86的Android模拟器失败

     Visual Studio 2017启动x86的Android模拟器失败 Visual Studio 2017默认提供多个Android模拟器.其中,x86模拟器运行较快.但是由于和Hyper-V服 ...

随机推荐

  1. P1498 南蛮图腾

    P1498 南蛮图腾 题目描述 自从到了南蛮之地,孔明不仅把孟获收拾的服服帖帖,而且还发现了不少少数民族的智慧,他发现少数民族的图腾往往有着一种分形的效果(看Hint),在得到了酋长的传授后,孔明掌握 ...

  2. 让菜鸡讲一讲费用流(EK)

    让我再讲一个故事吧. 又有一些小精灵要准备从银月城(S)迁徙到Nibel山(T). 这两个地方之间的道路构成了一个网络. 每个道路都有它自己的容量,这决定了每天有多少小精灵可以同时从这儿通过. 和上一 ...

  3. “管中窥豹”,MyCAT的基因缺陷

    提起MyCAT,我的脑海里,总是浮现出这样一首偈.弘忍觉得自己老了,需要找一个接班人,于是,弘忍要求弟子们每人写一个偈子,根据偈子观察各位弟子的开悟程度,从而传授正宗禅宗的衣钵.弟子们心里其实都很明白 ...

  4. 剑指Offer - 九度1511 - 从尾到头打印链表

    剑指Offer - 九度1511 - 从尾到头打印链表2013-11-29 21:08 题目描述: 输入一个链表,从尾到头打印链表每个节点的值. 输入: 每个输入文件仅包含一组测试样例.每一组测试案例 ...

  5. 波动数列 神奇的dp

    问题描述 观察这个数列: 1 3 0 2 -1 1 -2 ... 这个数列中后一项总是比前一项增加2或者减少3. 栋栋对这种数列很好奇,他想知道长度为 n 和为 s 而且后一项总是比前一项增加a或者减 ...

  6. 团队Alpha(八)冲刺

    目录 组员情况 组员1(组长):胡绪佩 组员2:胡青元 组员3:庄卉 组员4:家灿 组员5:凯琳 组员6:翟丹丹 组员7:何家伟 组员8:政演 组员9:黄鸿杰 组员10:刘一好 组员11:何宇恒 展示 ...

  7. C#如何在keydown事件里判断按下的是左shift还是右shift

    public partial class Form1 : Form { [System.Runtime.InteropServices.DllImport("user32.dll" ...

  8. RabbitMQ-Java客户端API指南-上

    RabbitMQ-Java客户端API指南-上 客户端API严格按照AMQP 0-9-1协议规范进行建模,并提供了易于使用的附加抽象. RabbitMQ Java客户端使用com.rabbitmq.c ...

  9. [CF932D]Tree

    题目大意:两种操作: $1\;u\;w:$把下一个点挂在$u$下,权值为$w$. $2\;u\;w:$询问从$u$开始的序列的最长长度.序列为从$u$开始的祖先序列中的不严格上升序列 题解:可以把一个 ...

  10. HDU - 5919 Sequence II

    题意: 给定长度为n的序列和q次询问.每次询问给出一个区间(L,R),求出区间内每个数第一次出现位置的中位数,强制在线. 题解: 用主席树从右向左的插入点.对于当前点i,如果a[i]出现过,则把原位置 ...