質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

ビルド

ソースコードを単体で実行可能なソフトウェアへ変換する過程をビルド(build)と呼びます

Xamarin

Xamarin(ザマリン)は、iPhoneなどのiOSやAndroidで動作し、C# 言語を用いてアプリを開発できるクロスプラットフォーム開発環境です。Xamarin Studioと C# 言語を用いて、 iOS と Android の両方の開発を行うことができます。

Q&A

解決済

1回答

1626閲覧

Android,iOSがDependencyServiceが読み込まれない

pj7577bm60v

総合スコア13

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

ビルド

ソースコードを単体で実行可能なソフトウェアへ変換する過程をビルド(build)と呼びます

Xamarin

Xamarin(ザマリン)は、iPhoneなどのiOSやAndroidで動作し、C# 言語を用いてアプリを開発できるクロスプラットフォーム開発環境です。Xamarin Studioと C# 言語を用いて、 iOS と Android の両方の開発を行うことができます。

0グッド

0クリップ

投稿2020/05/05 06:12

編集2020/05/05 06:24

前提・実現したいこと

Xamarinでアプリ開発を目指しています。
DependencyServiceを使いアンドロイド、iOSからデータを返すコードを書いたのですが、
ビルドしたときにエラーになってしまいます。
DependencyService以外の実装でも同じではないかと思うのですが、ビルドエラーを解決したいです。

発生している問題・エラーメッセージ

Android MainActivity.csで アクティビティを起動可能とマークするには、次のように [Activity] 属性を追加して MainLauncher = true を指定します: [Activity (MainLauncher = true)] public class MyActivity : Activity というエラーがでます。これに従いMainActivity.csにクラスを実装するとページに何も表示されなくなってしまいます。 該当のソースコードにpublic class MyActivity : Activityを実装したものを載せさせていただきます。 ~~iOS [HotReload] (2020-05-05 15:17:24.6): INFO: (App4.iOS) HotReload: Initialized Agent. [HotReload] (2020-05-05 15:17:29.5): INFO: XAML ホット リロードが接続され、準備が整いました。 という表示以降が表示されません。 アンドロイドとほぼ同じ状態です。 ~~ iOS解決できました。ありがとうございました。

該当のソースコード

MyActivity.cs

1using System; 2 3using Android.App; 4using Android.Content.PM; 5using Android.Runtime; 6using Android.Views; 7using Android.Widget; 8using Android.OS; 9 10[assembly: Xamarin.Forms.Dependency(typeof(App4.Droid.PlarFormNameProvider))] 11namespace App4.Droid 12{ 13 [Activity(Label = "App4", Icon = "@mipmap/icon", Theme = "@style/MainTheme", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)] 14 15 public class MyActivity : Activity 16 { 17 18 } 19 20 public class PlarFormNameProvider : IPlatformNameProvider 21 { 22 public string GetName() 23 { 24 return "android"; 25 } 26 } 27 public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity 28 { 29 protected override void OnCreate(Bundle savedInstanceState) 30 { 31 TabLayoutResource = Resource.Layout.Tabbar; 32 ToolbarResource = Resource.Layout.Toolbar; 33 34 base.OnCreate(savedInstanceState); 35 36 Xamarin.Essentials.Platform.Init(this, savedInstanceState); 37 global::Xamarin.Forms.Forms.Init(this, savedInstanceState); 38 LoadApplication(new App()); 39 } 40 public override void OnRequestPermissionsResult(int requestCode, string[] permissions, [GeneratedEnum] Android.Content.PM.Permission[] grantResults) 41 { 42 Xamarin.Essentials.Platform.OnRequestPermissionsResult(requestCode, permissions, grantResults); 43 44 base.OnRequestPermissionsResult(requestCode, permissions, grantResults); 45 } 46 } 47}

Main.cs

1using System; 2using System.Collections.Generic; 3using System.Linq; 4 5using Foundation; 6using UIKit; 7 8[assembly: Xamarin.Forms.Dependency(typeof(App4.iOS.PlarFormNameProvider))] 9namespace App4.iOS 10{ 11 12 public class PlarFormNameProvider : IPlatformNameProvider 13 { 14 public string GetName() 15 { 16 return "iOS"; 17 } 18 } 19 public class Application 20 { 21 // This is the main entry point of the application. 22 static void Main(string[] args) 23 { 24 // if you want to use a different Application Delegate class from "AppDelegate" 25 // you can specify it here. 26 UIApplication.Main(args, null, "AppDelegate"); 27 } 28 } 29} 30

試したこと

Andoroidがうまくググれずお手上状態です。
よろしくおねがいいたします。

補足情報(FW/ツールのバージョンなど)

Microsoft Visual Studio Community 2019
Version 16.5.4
.NET Framework version 4.8.03752

参考にさせていただいてるブログは
リンク内容
184ページになります。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

DependencyServiceの実装は問題ないように見えます。
Androidの下記コードを見ると、空のMyActivityクラスの上にActivity属性を記述して、MainLauncher = trueに設定しているので、何も表示されない状態になっているのでしょう。

C#

1 [Activity(Label = "App4", Icon = "@mipmap/icon", Theme = "@style/MainTheme", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)] 2 public class MyActivity : Activity 3 { 4 5 }

基本はアクティビティにデフォルトで生成されたMainActivityのみ使用して実装していきます。
複数アクティビティを作成して実行できないことはないみたいですが(参考ページ)

C#

1using System; 2 3using Android.App; 4using Android.Content.PM; 5using Android.Runtime; 6using Android.Views; 7using Android.Widget; 8using Android.OS; 9 10[assembly: Xamarin.Forms.Dependency(typeof(App4.Droid.PlarFormNameProvider))] 11namespace App4.Droid 12{ 13 public class PlarFormNameProvider : IPlatformNameProvider 14 { 15 public string GetName() 16 { 17 return "android"; 18 } 19 } 20 21 [Activity(Label = "App4", Icon = "@mipmap/icon", Theme = "@style/MainTheme", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)] 22 public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity 23 { 24 protected override void OnCreate(Bundle savedInstanceState) 25 { 26 TabLayoutResource = Resource.Layout.Tabbar; 27 ToolbarResource = Resource.Layout.Toolbar; 28 29 base.OnCreate(savedInstanceState); 30 31 Xamarin.Essentials.Platform.Init(this, savedInstanceState); 32 global::Xamarin.Forms.Forms.Init(this, savedInstanceState); 33 LoadApplication(new App()); 34 } 35 public override void OnRequestPermissionsResult(int requestCode, string[] permissions, [GeneratedEnum] Android.Content.PM.Permission[] grantResults) 36 { 37 Xamarin.Essentials.Platform.OnRequestPermissionsResult(requestCode, permissions, grantResults); 38 39 base.OnRequestPermissionsResult(requestCode, permissions, grantResults); 40 } 41 } 42}

投稿2020/05/05 07:48

takapi_cs

総合スコア349

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

pj7577bm60v

2020/05/05 09:53

ありがとうございました。解決できました。 自分の認識として [Activity(Label = "App4", Icon = "@mipmap/icon", Theme = "@style/MainTheme", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)] を public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity の直上に置く。他のクラスが読み込んでしまって動作しなかったという認識でよろしいのでしょうか? DependencyService以外の実装でも問題なく動作しました。ありがとうございました。
takapi_cs

2020/05/05 09:58

>他のクラスが読み込んでしまって動作しなかったという認識でよろしいのでしょうか? そうですね、誤って他のクラスと属性を紐付けてしまっていたということですね。 何か属性を付け足したい場合はクラスの直上に記載していけば機能します。
pj7577bm60v

2020/05/05 10:05

重ね重ねありがとうございます。勉強させていただきました。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問