sgunji’s blog

ものづくりやプログラミングなど…最近はXamarinを少々

Googleマップ マイプレイスの自分以外が所有する地図について

マイプレイスの地図の中で自分以外が所有する地図はマップ側からは消せません。

ただ、自分以外が所有するマップは、ドライブと連携されているようなので、ドライブ側からアプローチしてみたところ、消えました!!

手順としては、
1.ドライブを開く
2.共有アイテムを開く
3.消したい地図をドライブから削除する

とすると、
一定時間後、マップから削除されます!


-スマホからの投稿-

Xamarin.FormsのMasterDetailPageのテンプレートについて

Xamarinのテンプレートを見ているとデフォルトでDetailPageを発見!

PCLプロジェクトを右クリックして,【新しい項目を追加】から
f:id:sgunji:20170325130719p:plain

適当に名前を付けて追加しますと,必要なものが勝手にできてしまう!!

  • (適当につけた名前).xaml
  • (適当につけた名前)Detail.xaml
  • (適当につけた名前)Master.xaml
  • (適当につけた名前)MenuItem.cs

が自動生成されます。

f:id:sgunji:20170325131115p:plain

App.Xaml.csを修正して,

public App()
{
     InitializeComponent();
     //MainPage = new NavigationPage( new App8_PCL.MainPage());
     MainPage = new DetailPage1();
}

ビルドすると・・・

CS0101エラーが発生し,名前空間が重複しているといわれます。

下記リンクによると,これはテンプレートのバグらしい。

forums.xamarin.com

優秀な世界のプログラマーに従って修正が必要です。

まず,作成された

  • DetailPage1.xaml.cs
  • DetailPage1Detail.xaml.cs
  • DetailPage1Master.xaml.cs
  • DetailPage1MenuItem.cs

名前空間を直します。

それぞれのソースの名前空間
(プロジェクト名).(適当につけた名前)
となっているので,
(プロジェクト名)のみに直します。

修正前・・・

namespace (プロジェクト名).DetailPage1

修正後・・・

namespace (プロジェクト名)

また,.DetailPage1Master.xaml.cs

class DetailPage1MasterViewModel : INotifyPropertyChanged
{
   public ObservableCollection<DetailPage1MenuItem> MenuItems { get; }
   public DetailPage1MasterViewModel()
   {
      DetailPage1MenuItems = new ObservableCollection<DetailPage1MenuItem>(new[]
      {
          new DetailPage1MenuItem { Id = 0, Title = "Page 1" },
          new DetailPage1MenuItem { Id = 1, Title = "Page 2" },
          new DetailPage1MenuItem { Id = 2, Title = "Page 3" },
          new DetailPage1MenuItem { Id = 3, Title = "Page 4" },
          new DetailPage1MenuItem { Id = 4, Title = "Page 5" },
          });
      }
      public event PropertyChangedEventHandler PropertyChanged;
      void OnPropertyChanged([CallerMemberName]string propertyName = "") =>
          PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));


}

の部分の

DetailPage1MenuItems = new ObservableCollection<DetailPage1MenuItem>(new[]{...}

ObservableCollection<DetailPage1MenuItem> DetailPage1MenuItems = new ObservableCollection<DetailPage1MenuItem>(new[]{...}

に修正します。

これで修正完了です。
ビルドしてみましょう。

f:id:sgunji:20170325135607g:plain

ただし,このままだとAndroid版はbackキーを押したときエラーで落ちます。

forums.xamarin.com

Xamarin.Formsのバージョンを2.3.4系に上げるといいようなので,
一番(投稿時)新しいのは2.3.4.214-pre5なので,これをインストール
ソリューションをクリーンした後,ビルドするとbackキーエラーも回避できるようです。

VisualStudi2017リリース その2

個人的に興味があったのでCommunityをインストールしてみたところ,VS2015のXamarinと共存できている模様。しばらく2丁拳銃状態でやってみようと思う。

インストールは10分とはいかなかったがそれでも30分くらいで終わったような気がする。
その前にオフラインでインストールできるようにしたんだけども。

IDE自体も2015と比べると軽いような気もしなくもない。

インストールが早いのは助かります。

www.visualstudio.com

Could not load assembly Windows.Foundation.UniversalApiContractというビルドエラー

重大度レベル コード 説明 プロジェクト ファイル 行 抑制状態
エラー Exception while loading assemblies: System.IO.FileNotFoundException: Could not load assembly 'Windows.Foundation.UniversalApiContract, Version=3.0.0.0, Culture=neutral, PublicKeyToken='. Perhaps it doesn't exist in the Mono for Android profile?
ファイル名 'Windows.Foundation.UniversalApiContract.dll' です。'Windows.Foundation.UniversalApiContract.dll'
場所 Java.Interop.Tools.Cecil.DirectoryAssemblyResolver.Resolve(AssemblyNameReference reference, ReaderParameters parameters)
場所 Xamarin.Android.Tasks.ResolveAssemblies.AddAssemblyReferences(DirectoryAssemblyResolver resolver, ICollection`1 assemblies, AssemblyDefinition assembly, Boolean topLevel)
場所 Xamarin.Android.Tasks.ResolveAssemblies.Execute(DirectoryAssemblyResolver resolver)

というメッセージが出てビルドエラーが発生。
突然ビルドできなくなりましたが,


forums.xamarin.com

上記を参照すると,どうやらWindows.Storageが悪さしているよう。

Xamarin.Formsにおいてシリアライズしたデータを読み込むときにDependencyServiceを使って読み込もうとしているのですが,その際に誤ってAndroidプロジェクトにFileInputStreamを使ったのが間違い。

Intellisenseが効いたので使えるものと思っていましたが,なんと使えないとは!!

Android.Views.InflateExceptionについて

Xamarinで何回かデバッグしているうちに

 

Android.Views.InflateException: Binary XML file line #1: Binary XML file line #1: Error inflating class android.support.v7.widget.Toolbar

 

というメッセージが出て困りました。

 protected override void OnCreate(Bundle bundle)
        {
            TabLayoutResource = Resource.Layout.Tabbar;
            ToolbarResource = Resource.Layout.Toolbar;

            base.OnCreate(bundle);//<-ここで止まっちゃう

            global::Xamarin.Forms.Forms.Init(this, bundle);

            var app = new App();
            LoadApplication(app);

        }

teratail.com

上記を参考に何回かバージョンを落として,アップデートしてを繰り返しましたが,なおらず・・・。

Androidの参照を除いてみると

  • System.ObjectModel

に黄色い三角が表示されていました。



f:id:sgunji:20170306123742p:plain

NuGetパッケージの復元ってやったらできました!