我在Android Studio中设置了标准的地图活动。然后我需要添加一个'包装器'类,以便我可以实现与MapsActivity的OnMapReadyCallback不同的类。此包装类没有可视组件,不应创建视图,然后调用MapsActivity来创建地图视图。如何在AndroidManifest.xml中指定包装类
所有内容都会编译,但运行时不会显示任何视图。
如果我在创建映射之后将quit looper从dispose移动到MReady,我只在日志中获得以下行。
E/ConnectivityService:RemoteException的发现试图发送一个 回调味精NetworkRequest [ID = 10,legacyType = -1,[ 功能:INTERNET & NOT_RESTRICTED & TRUSTED]
但仍没有视图出现。下面的代码更新到最新。我的Log.d/i消息也没有出现在日志中,尽管它设置为冗长。
代码 - 的AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.booxotel.smallgminterface">
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.INTERNET" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme"
android:name = ".SmallMap">
<meta-data
android:name="com.google.android.geo.API_KEY"
android:value="@string/google_maps_key" />
<activity
android:name="com.booxotel.smallgminterface.MapsActivity"
android:label="@string/title_activity_maps">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
SmallMap.java(的一部分)
public class SmallMap extends Application implements FREExtension {
public static final String TAG = "MapInterface";
private static GoogleMap gMap;
private static LatLng cmap;
private static MarksData md;
private Handler mHandler;
public static FREContext extensionContext;
public static Context appContext;
public static SettingsContentObserver mSettingsWatcher;
public ShowMap shm;
@Override
public void onCreate() {
super.onCreate();
appContext = getApplicationContext();
}
public class ShowMap extends Thread {
ShowMap() {
prepareThread(false);
}
public void prepareThread(Boolean quit){
Log.i(TAG, "prepare thread");
if (gMap == null && !quit) {
Looper.prepare();
mHandler = new Handler();
Intent intent = new Intent(SmallMap.appContext, MapsActivity.class);
appContext.startActivity(intent);
}else if(quit) {
Looper.myLooper().quit();
}
Looper.loop();
}
}
public class MReady implements MapReadyEvent {
@Override
public void MapReady() {
gMap = MapsActivity.getMap();
shm.prepareThread(true);
Log.i(TAG, "map ready");
extensionContext.dispatchStatusEventAsync("mapReady", "true");
}
}
@Override
public FREContext createContext(String contextType) {
shm = new ShowMap();
shm.prepareThread(false);
return new MapInterfaceContext();
}
@Override
public void dispose() {
Log.d(TAG, "Extension disposed.");
Context context = appContext.getApplicationContext();
context.getContentResolver().unregisterContentObserver(mSettingsWatcher);
appContext = null;
extensionContext = null;
mSettingsWatcher = null;
}
@Override
public void initialize() {
Log.d(TAG, "Extension initialized.");
}
}
MapsActivity.java
public class MapsActivity extends FragmentActivity implements OnMapReadyCallback {
public static GoogleMap mMap;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_maps);
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
.findFragmentById(R.id.map);
mapFragment.getMapAsync(this);
}
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
MapReadyEvent mre = new MapReadyEvent() {
@Override
public void MapReady() {}
};
mre.MapReady();
}
public static GoogleMap getMap() {
return mMap;
}
}
MapReadyEvent.java
public interface MapReadyEvent {
void MapReady();
}
activity_maps.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal" android:layout_width="match_parent"
android:layout_height="match_parent">
<fragment xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/map"
android:name="com.google.android.gms.maps.SupportMapFragment"
android:layout_width="311dp"
android:layout_height="290dp"
android:layout_marginLeft="710dp"
android:layout_marginTop="167dp"
tools:context="com.mysite.testmap.MapsActivity" />
</RelativeLayout>
你能发表一些代码吗? –
我自己发现了一些错误,现在map仍然没有出现,但测试完成,logcat只包含一行:未能连接到服务器:java.net.UnknownHostException:无法解析主机“play.googleapis.com”:没有地址关联与主机名 – doug777
我不知道哪些部分的代码我应该发布帮助。包装或一些XML文件? – doug777