我目前在一个Android项目中,我们的主视图是TabActivity,每个选项卡都是一个单独的Activity.一个是MapActivity,另外两个是普通活动.
首先请注意,我认为我们必须将每个选项卡作为单独的活动,因为在单独的活动中有太多代码只是让TabHost切换选项卡上的内容视图更改并将所有代码放在同一个类中.无论如何,回到问题.
其中一个选项卡包含一个按钮,按下该按钮时,TabActivity会切换到MapActivity并将地图设置为特定位置的动画.
在http://joshclemm.com/blog/?p=86上找到的教程显示了如果TabHost包含mapview和listview的方法.如果单击ListView中的项目,TabHost将切换到mapview并动画到该位置(这些坐标).这正是我按下单独活动中的按钮时需要做的事情.
MainView.java创建如下:
public class MainView extends TabActivity implements OnTabChangeListener{
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Resources res = getResources(); // Resource object to get Drawables
TabHost tabHost = getTabHost(); // The activity TabHost
TabHost.TabSpec spec; // Resusable TabSpec for each tab
Intent intent; // Reusable Intent for each tab
intent = new Intent().setClass(this, MapGUI.class);
spec = tabHost.newTabSpec("map").setIndicator("Map",
res.getDrawable(R.drawable.ic_tab_menu_item))
.setContent(intent);
tabHost.addTab(spec);
intent = new Intent().setClass(this, MissionView.class);
spec = tabHost.newTabSpec("mission").setIndicator("Mission",
res.getDrawable(R.drawable.ic_tab_menu_item))
.setContent(intent);
tabHost.addTab(spec);
intent = …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用片段在一组选项卡中显示地图.我遇到的问题是,如果用户导航到另一个片段然后返回,则地图活动会消失.如何在tabhost中以片段形式显示MapActivity?
其基础来自于如何将MapActivity与片段集成的众多问题(请参阅片段中的MapView(Honeycomb))
MainTabActivity有一个tabhost,并使用FragmentManager在选项卡中显示Fragments.MapFragment有一个tabhost,用它来显示MapActivity.
MapFragment确实使用LocalActivityManager将生命周期事件传播到包含的活动.
所以MapFragment:
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.map_fragment, container, false);
mTabHost = (TabHost) view.findViewById(android.R.id.tabhost);
mTabHost.setup(getLocalActivityManager());
Intent intent = new Intent(getActivity(), MapActivityWrapper.class);
// intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);//does nothing
TabHost.TabSpec tab = mTabHost.newTabSpec("map")
.setIndicator("map")
.setContent(intent);
mTabHost.addTab(tab);
return view;
}
Run Code Online (Sandbox Code Playgroud)
MapFragment布局:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/tabhost"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TabWidget android:id="@android:id/tabs"
android:visibility="gone"
android:layout_width="fill_parent"
android:layout_height="wrap_content"/>
<FrameLayout android:id="@android:id/tabcontent"
android:layout_width="fill_parent"
android:layout_height="fill_parent"/>
</LinearLayout>
</TabHost>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
MainTabActivity中用于更改选项卡内容的代码:
private void updateTab(String oldId, String tabId) …Run Code Online (Sandbox Code Playgroud) 我只是想让mapview识别出一个点击,以便调用另一个活动.
到目前为止,我尝试了常规的"onClick",它总是在常规视图中为我工作,然后覆盖"onTouchEvent",最后但并非最不重要的是使用onClickListener.
我将以下三种方式都放入以下代码中.任何帮助都非常感谢.
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapView;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
public class HelloMapView extends MapActivity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
final MapView map;
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
map = (MapView) findViewById(R.id.mapview);
map.setOnClickListener(new MapView.OnClickListener() {
public void onClick(View v){
System.out.println("I listened!");
}
});
}
@Override
protected boolean isRouteDisplayed() {
return false;
}
@Override
public boolean onTouchEvent(MotionEvent arg0) {
System.out.println("onTouchEvent happened!");
super.onTouchEvent(arg0);
return super.onTouchEvent(arg0);
}
public void onClick(){
System.out.println("onClick entered!"); …Run Code Online (Sandbox Code Playgroud) 我想创建一个MapView,但扩展MapActivity会抛出一个classNotFoundException:
/AndroidRuntime( 374): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2585)
E/AndroidRuntime( 374): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
E/AndroidRuntime( 374): at android.app.ActivityThread.access$2300(ActivityThread.java:125)
E/AndroidRuntime( 374): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
E/AndroidRuntime( 374): at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime( 374): at android.os.Looper.loop(Looper.java:123)
E/AndroidRuntime( 374): at android.app.ActivityThread.main(ActivityThread.java:4627)
E/AndroidRuntime( 374): at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime( 374): at java.lang.reflect.Method.invoke(Method.java:521)
E/AndroidRuntime( 374): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
E/AndroidRuntime( 374): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
E/AndroidRuntime( 374): at dalvik.system.NativeStart.main(Native Method)
E/AndroidRuntime( 374): Caused by: java.lang.ClassNotFoundException: com.androidcourse.phonemapper.view.MapShowActivity in loader dalvik.system.PathClassLoader[/system/framework/com.google.android.maps.jar:/data/app/com.androidcourse.phonemapper-2.apk]
E/AndroidRuntime( 374): at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:243)
E/AndroidRuntime( 374): at java.lang.ClassLoader.loadClass(ClassLoader.java:573)
E/AndroidRuntime( 374): at java.lang.ClassLoader.loadClass(ClassLoader.java:532)
E/AndroidRuntime( 374): at android.app.Instrumentation.newActivity(Instrumentation.java:1021)
E/AndroidRuntime( 374): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2577) …Run Code Online (Sandbox Code Playgroud) 如果我在SQLite数据库中存储一堆位置的纬度和经度,我如何检索这些值并将它们放在OverlayItem类中以便在Google的Map代码中使用?
数据库名称: database
表名: place
place表中的字段:
id titledescriptionlatitudelongitude如何获取每个位置的纬度和经度数据并将其添加到ArrayList itemOverlay?
你有什么想法或例子吗?非常感谢
我是android和java的新手.我正在尝试使应用程序执行以下任务.
目前我有一张地图,我可以展示一个点,我已经实现了一个广播接收器,以获得形式的短信和经度.
但我不确定如何在接收新短信时从广播接收器更新地图.
任何帮助或提示都会很有用.
谢谢
android google-maps-api-3 android-intent android-layout mapactivity
经过几个小时的配置和搜索代码后,我已经减少了几百个错误,并留下了这两个错误:
"该项目未构建,因为其构建路径不完整.无法找到com.google.android.maps.MapActivity的类文件.修复构建路径然后尝试构建此项目"
"无法解析com.google.android.maps.MapActivity类型.它是从所需的.class文件间接引用的"
我到处寻找任何关于如何解决这个问题的提示.我的构建路径似乎很好.我包括了可能适用的所有JAR.我很确定我正在使用正确的ADT,所以任何帮助对于需要改变的东西都会很棒.
我已经创建了地图actvity.But它没有在mapview.just上显示地图显示空白块.有什么办法吗?
activity_main.xml-
<?xml version="1.0" encoding="utf-8"?>
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:name="com.google.android.gms.maps.MapFragment"/>
Run Code Online (Sandbox Code Playgroud)
活动代码 -
package com.example.googlemap;
import android.app.Activity;
import android.os.Bundle;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
Run Code Online (Sandbox Code Playgroud)
清单文件 -
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="16" />
<permission
android:name="com.example.googlemap.permission.MAPS_RECEIVE"
android:protectionLevel="signature" />
<meta-data
android:name="com.google.android.maps.v2.AIzaSyDRv4Ul_9iPW-roHIsc8EuxKwkRN8jWivs"
android:value="AIzaSyDRv4Ul_9iPW-roHIsc8EuxKwkRN8jWivs" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
<!--
The following two permissions are not required to use
Google Maps Android API v2, but are recommended.
--> …Run Code Online (Sandbox Code Playgroud) 我有问题......(真的吗?:-))
我想做的事?
我需要创建一个本机插件来启动MapActivity(显示POI,显示行程,......),当mapView在某些条件下关闭时,我必须加载一个特定的html页面.
所以:
带有JS事件的.HTML页面 - > .JS插件 - > .Java插件 - (启动) - > .Java MapActivity
当我的MapActivity完成时:
MapActivity发送[Status.ok]或[message] X-> .Java PlugIn - > .JS CallBack - >加载新页面
有什么问题?
但不幸的是,我有这个流程:
- > .java插件执行:{Launch(MapActivity); 返回响应}
然后启动我的mapactivity,但我的回调已经传递,没有任何数据.
另一个问题:PhoneGap似乎要取消onActivityResult(),在MapViewPlugin.java中获取回调数据是不可能的
代码?
mapview.js - 插件
在启动MapActivity之前调用callBack的问题.sleep(2000)是一种解决方法,用于在显示MapView后显示新页面.但这不是一个好问题!
MapView.prototype.showItineraryMapView = function(itineraryEncoded, startLat,
startLong, startTitle, startDesc, finishLat, finishLong, finishTitle,
finishDesc, callBack) {
PhoneGap.exec(function() {
sleep(2000);
callBack();
}, function(){} , "MapView", "show_itinerary", [ itineraryEncoded, startLat, startLong,
startTitle, startDesc, finishLat, finishLong, finishTitle,
finishDesc ]);
};
function sleep(ms) { …Run Code Online (Sandbox Code Playgroud) android mapactivity android-activity phonegap-plugins cordova
我正在尝试设置一个使用Jake Wharton的ActionBarSherlock和ActionBarSherlock-Plugin-Maps的示例项目.我按照这里和这里的说明进行操作.我不一定需要碎片.这是我创建的简单类.
package com.example.actionbarsherlock;
import android.os.Bundle;
import com.actionbarsherlock.app.SherlockMapActivity;
public class MainActivity extends SherlockMapActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
protected boolean isRouteDisplayed() {
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
虽然我试着按照确切的描述,但最终ClassNotFoundException我会在启动应用程序时使用.这是堆栈跟踪.
Unable to resolve superclass of Lcom/actionbarsherlock/app/SherlockMapActivity; (729)
Link of class 'Lcom/actionbarsherlock/app/SherlockMapActivity;' failed
Unable to resolve superclass of Lcom/example/actionbarsherlock/MainActivity; (533)
Link of class 'Lcom/example/actionbarsherlock/MainActivity;' failed
D/AndroidRuntime(408): Shutting down VM
threadid=3: thread exiting with uncaught exception (group=0x4001b188)
Uncaught handler: …Run Code Online (Sandbox Code Playgroud) android classnotfoundexception mapactivity actionbarsherlock
我正在为Android开发应用程序并使用MapActivity进行谷歌地图.但我得到错误"无法获得连接工厂客户端".我为这个错误探索了几个线程,但无法获得任何令人满意的答案.这是我的代码:
的Manifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="wsu.cs558.roadmonitoring.view"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="10"
android:targetSdkVersion="17" />
<!--
<permission
android:name="wsu.cs558.roadmonitoring.view.permission.MAPS_RECEIVE"
android:protectionLevel="signature"/>
-->
<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.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
<!-- <uses-permission android:name="wsu.cs558.roadmonitoring.view.permission.MAPS_RECEIVE"/> -->
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MapViewActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<uses-library android:name="com.google.android.maps" />
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="AIzaSyCyT7IoMyt5iqRAd2mhO2m50dBecCc59YI" />
</application>
Run Code Online (Sandbox Code Playgroud)
main.xml中
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<com.google.android.maps.MapView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/map_view"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:clickable="true"
android:enabled="true"
android:apiKey="AIzaSyCyT7IoMyt5iqRAd2mhO2m50dBecCc59YI" …Run Code Online (Sandbox Code Playgroud)