【发布时间】:2017-02-20 22:12:54
【问题描述】:
我已经为一个问题工作了几天,但我还不能解决它。我需要帮助。当点击按钮时,我想从活动中激活谷歌地图的片段。
MainActivity.cs 代码如下
using Android.App;
using Android.Content;
using Android.Widget;
using Android.OS;
using Android.Views;
using System;
using Android.Media;
using System.Json;
using System.Threading.Tasks;
using System.Net;
using Android.Locations;
using System.Collections.Generic;
using System.Linq;
using Java.Lang;
using Newtonsoft.Json;
namespace gpsCaution
{
[Activity(Label = "gpsCaution", MainLauncher = true, Icon = "@drawable/gpsCaution")]
public class MainActivity : Activity
{
......
some codes
......
public static MainActivity Instance;
protected override async void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
Instance = this;
SetContentView(Resource.Layout.Main);
Button mbuttonShowMap = FindViewById<Button>(Resource.Id.buttonShowMap);
mbuttonShowMap.Click += delegate
{
StartActivity(typeof(Harita)); //** **It crashes here** **//
};
......
some codes
......
}
Main.axml 代码如下
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:minHeight="25px"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:paddingLeft="10dp"
android:paddingTop="10dp"
android:id="@+id/duzen">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/txtLocation"
android:width="200dp"
android:layout_alignParentRight="true" />
<TextView
android:text="Konumunuz:"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/textView1"
android:layout_toLeftOf="@id/txtLocation"
android:layout_alignTop="@id/txtLocation"
android:width="100dp"
android:layout_alignParentLeft="true" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/txtLocation"
android:id="@+id/txtAddress"
android:width="200dp"
android:layout_alignParentRight="true" />
<TextView
android:text="Adresiniz:"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/textView2"
android:layout_toLeftOf="@id/txtAddress"
android:layout_alignTop="@id/txtAddress"
android:layout_below="@id/txtLocation"
android:width="100dp"
android:layout_alignParentLeft="true" />
<TextView
android:text=""
android:layout_width="wrap_content"
android:layout_height="85dp"
android:id="@+id/textEmpty" />
<ProgressBar
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_gravity="bottom"
android:id="@+id/progressBar"
android:visibility="invisible" />
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Harita Görünümü"
android:id="@+id/buttonShowMap"
android:visibility="visible"
android:layout_alignBottom="@id/progressBar"
android:layout_alignParentBottom="true"
android:layout_marginBottom="10px"
android:layout_marginRight="20px" />
</RelativeLayout>
Harita.axml 代码如下
<?xml version="1.0" encoding="utf-8"?>
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/googlemap"
android:layout_width="match_parent"
android:layout_height="match_parent"
class="com.google.android.gms.maps.MapFragment"/>
Harita.cs 代码如下
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Android.App;
using Android.Content;
using Android.OS;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using Android.Gms.Maps;
using Android.Gms.Maps.Model;
namespace gpsCaution
{
[Activity(Label = "Harita")]
public class Harita : Activity,IOnMapReadyCallback
{
public void OnMapReady(GoogleMap googleMap)
{
MarkerOptions markerOptions = new MarkerOptions();
markerOptions.SetPosition(new LatLng(16.03, 108));
markerOptions.SetTitle("BABALAR");
googleMap.AddMarker(markerOptions);
//optional
googleMap.UiSettings.ZoomControlsEnabled = true;
googleMap.UiSettings.CompassEnabled = true;
googleMap.MoveCamera(CameraUpdateFactory.ZoomIn());
}
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
SetContentView(Resource.Layout.Harita);
MapFragment mapFragment = (MapFragment)FragmentManager.FindFragmentById(Resource.Id.googlemap);
mapFragment.GetMapAsync(this);
}
}
}
最后AndroidManifest.xml代码如下
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="gpsCaution.gpsCaution" android:versionCode="1" android:versionName="1.0" android:installLocation="preferExternal">
<uses-sdk android:minSdkVersion="19" android:targetSdkVersion="23" />
<application android:label="gpsCaution" android:icon="@drawable/gpsCaution"></application>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_GSERVICES" />
<uses-permission android:name="com.google.providers.gsf.permission.READ_GSERVICES" />
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" />
<uses-permission android:name="gpsCaution.gpsCaution.MAPS_RECEIVE" android:protectionLevel="signature"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-features android:glEsVersion="0x00020000" android:required="true" />
<application android:label="gpsCaution">
<meta-data android:name="com.google.android.geo.API_KEY" android:value="REMOVED" />
<meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />
</application>
</manifest>
我确信我的 google api 密钥是正确的,因为当我在 mainactivity 中编写代码而没有第二个活动时它可以工作。但是当我想在单击按钮时从主要活动中调用谷歌地图的片段时,我遇到了错误“未处理的异常: Android.Views.InflateException: Binary XML file line #1: Error inflating class fragment"
请帮忙,提前谢谢
【问题讨论】:
标签: android dictionary android-activity xamarin fragment