Xamarin.Formsのチュートリアル
XamarinでiOS、Androidで共通のUIコードを書こうと思ったら、Xamarin.Formsを使う必要があります。
VisualStudio2015で、「Blank App (Android)」や「Blank App (iPhone)」などのテンプレートを使うと、UIを各OS用に独自にプログラミングしなくてはなりません。
共通のUIが書けるXamarin.Formsを使うには、「Blank App (Xamarin.Forms Portable)」というテンプレートを使います。(Xamarin.Forms Sharedとの違いはまだちょっと良く分かりませんが、今後分かったらメモ書きます)
1.Xamarin.Formsの最初の1歩
こちらのページに、Xamarin.Formsの入門用チュートリアルがあります。
https://developer.xamarin.com/guides/xamarin-forms/getting-started/hello-xamarin-forms/quickstart/
Xamarin.Formsの取っ掛かりとしてこちらのページに書かれている通りにプログラムを書いてみたのですが、一部そのままでは一部そのままではビルドできない箇所があります。
どこかというと、WindowsPhoneのプログラム。上記のホームページ上では下図のようになっているのですが、これはVisualStudio2015で作られるWindowsPhone 8.1ではビルドできません。
// Windows Phone 8.1ではビルドエラーとなるコード
//(Xamarin.FormsのQuickStartのコードです)
using Microsoft.Phone.Tasks;
using Phoneword.WinPhone;
using Xamarin.Forms;
[assembly: Dependency(typeof(PhoneDialer))]
namespace Phoneword.WinPhone
{
public class PhoneDialer : IDialer
{
public bool Dial(string number)
{
PhoneCallTask phoneCallTask = new PhoneCallTask
{
PhoneNumber = number, DisplayName = "Phoneword"
};
phoneCallTask.Show();
return true;
}
}
}
WindowsPhone 8.1からは、Microsoft.Phone.Tasks名前空間が無くなっているそうで、それが原因でこのコードはビルドエラーとなってしまうそうです。
(参照:http://stackoverflow.com/questions/24997435/microsoft-phone-tasks-namespace-is-not-available)
で、どうするかというと、こんな感じに書いてみました。
// Windows Phone 8.1でもビルドできました。
using Windows.ApplicationModel.Calls;
using Phoneword.WinPhone;
using Xamarin.Forms;
[assembly: Dependency(typeof(PhoneDialer))]
namespace Phoneword.WinPhone
{
public class PhoneDialer : IDialer
{
public bool Dial(string number)
{
PhoneCallManager.ShowPhoneCallUI(number, "Phoneword");
return true;
}
}
}
Windows.ApplicationModel.Calls名前空間のPhoneCallManagerクラスで、同様のことができるみたいです。
残念ながらWindows Phoneは持っていないので動作確認はしていないのですが...
Author And Source
この問題について(Xamarin.Formsのチュートリアル), 我々は、より多くの情報をここで見つけました https://qiita.com/mash0510/items/ecfdcd7f40a9bdc104dc著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .