【问题标题】:Swipe google MapView to go to another scren/activity in Android滑动 google MapView 以转到 Android 中的另一个屏幕/活动
【发布时间】:2012-07-23 08:04:12
【问题描述】:

滑动 Google 地图视图后,我想转到另一个活动或屏幕。但它给了我例外。我正在尝试使用“ViewPager”API 来实现这一点。是否可以滑动到另一个活动。

例外情况:

07-23 12:22:08.906: E/AndroidRuntime(806): 致命异常: main 07-23 12:22:08.906:E/AndroidRuntime(806):android.view.InflateException: 二进制 XML 文件第 7 行:膨胀类时出错 com.google.android.maps.MapView 07-23 12:22:08.906: E/AndroidRuntime(806):在 android.view.LayoutInflater.createView(LayoutInflater.java:518) 07-23 12:22:08.906:E/AndroidRuntime(806):在 android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:570) 07-23 12:22:08.906: E/AndroidRuntime(806): 在 android.view.LayoutInflater.rInflate(LayoutInflater.java:623) 07-23 12:22:08.906:E/AndroidRuntime(806):在 android.view.LayoutInflater.inflate(LayoutInflater.java:408) 07-23 12:22:08.906:E/AndroidRuntime(806):在 android.view.LayoutInflater.inflate(LayoutInflater.java:320) 07-23 12:22:08.906:E/AndroidRuntime(806):在 android.view.LayoutInflater.inflate(LayoutInflater.java:276) 07-23 12:22:08.906:E/AndroidRuntime(806):在 com.sample.swipeusingviewpager.SwipeUsingViewPagerActivity$SamplePagerAdapter.instantiateItem(SwipeUsingViewPagerActivity.java:61) 07-23 12:22:08.906: E/AndroidRuntime(806): 在 android.support.v4.view.ViewPager.addNewItem(ViewPager.java:321) 07-23 12:22:08.906:E/AndroidRuntime(806):在 android.support.v4.view.ViewPager.populate(ViewPager.java:441) 07-23 12:22:08.906:E/AndroidRuntime(806):在 android.support.v4.view.ViewPager.onAttachedToWindow(ViewPager.java:563) 07-23 12:22:08.906: E/AndroidRuntime(806): 在 android.view.View.dispatchAttachedToWindow(View.java:6156) 07-23 12:22:08.906:E/AndroidRuntime(806):在 android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:1122) 07-23 12:22:08.906: E/AndroidRuntime(806): 在 android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:1127) 07-23 12:22:08.906: E/AndroidRuntime(806): 在 android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:1127) 07-23 12:22:08.906: E/AndroidRuntime(806): 在 android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:1127) 07-23 12:22:08.906: E/AndroidRuntime(806): 在 android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:1127) 07-23 12:22:08.906: E/AndroidRuntime(806): 在 android.view.ViewRoot.performTraversals(ViewRoot.java:765) 07-23 12:22:08.906:E/AndroidRuntime(806):在 android.view.ViewRoot.handleMessage(ViewRoot.java:1859) 07-23 12:22:08.906:E/AndroidRuntime(806):在 android.os.Handler.dispatchMessage(Handler.java:99) 07-23 12:22:08.906:E/AndroidRuntime(806):在 android.os.Looper.loop(Looper.java:130) 07-23 12:22:08.906: E/AndroidRuntime(806):在 android.app.ActivityThread.main(ActivityThread.java:3683) 07-23 12:22:08.906:E/AndroidRuntime(806):在 java.lang.reflect.Method.invokeNative(Native Method) 07-23 12:22:08.906:E/AndroidRuntime(806):在 java.lang.reflect.Method.invoke(Method.java:507) 07-23 12:22:08.906: E/AndroidRuntime(806):在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 07-23 12:22:08.906: E/AndroidRuntime(806): 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 07-23 12:22:08.906:E/AndroidRuntime(806):在 dalvik.system.NativeStart.main(本机方法)07-23 12:22:08.906: E/AndroidRuntime(806):由以下原因引起: java.lang.reflect.InvocationTargetException 07-23 12:22:08.906: E/AndroidRuntime(806):在 java.lang.reflect.Constructor.constructNative(Native Method) 07-23 12:22:08.906:E/AndroidRuntime(806):在 java.lang.reflect.Constructor.newInstance(Constructor.java:415) 07-23 12:22:08.906:E/AndroidRuntime(806):在 android.view.LayoutInflater.createView(LayoutInflater.java:505) 07-23 12:22:08.906: E/AndroidRuntime(806): ... 25 更多 07-23 12:22:08.906: E/AndroidRuntime(806):引起:java.lang.IllegalArgumentException: MapViews 只能在 MapActivity 的实例中创建。 07-23 12:22:08.906:E/AndroidRuntime(806):在 com.google.android.maps.MapView.(MapView.java:291) 07-23 12:22:08.906:E/AndroidRuntime(806):在 com.google.android.maps.MapView.(MapView.java:264) 07-23 12:22:08.906:E/AndroidRuntime(806):在 com.google.android.maps.MapView.(MapView.java:247) 07-23 12:22:08.906: E/AndroidRuntime(806): ... 28 更多

谢谢。

【问题讨论】:

  • 您能否发布您的代码,以便更清晰?

标签: android


【解决方案1】:

您的日志清楚地说明了错误的原因:

原因:java.lang.IllegalArgumentException:MapViews 只能在 MapActivity 的实例中创建

换句话说:让你的Activity 扩展MapActivity

但是,除了明显的错误之外,您可能还需要重新考虑您的目标。即使你设法让MapViewViewPager 中工作(这在技术上绝对不是不可能的),用户交互会是什么样子? ViewPagerMapView 都使用滑动动作作为主要的用户交互方式。应该偏向哪一个?如果是ViewPager,则无法平移地图。反之亦然,如果您允许在地图上平移,则不能在不同页面之间滑动。

无论如何,只是一个想法。当然,这完全取决于你。顺便说一句,你可能对 GitHub 上的 android-support-v4-googlemaps 项目感兴趣,它可以让你在 Fragment 中使用 MapView

【讨论】:

  • 谢谢 MH。,根据你的建议,我试过了,现在可以了。但是当我在地图上滑动时,它不起作用。是否可以实现两种滑动,即在 MapView 中滑动,以及在不同页面之间滑动。请向我建议任何替代方案来实现此功能。
  • 嗯,这正是我想向您指出的:您需要为用户做出设计选择。我想您要么必须禁用地图上的平移(使其成为静态视图),在其周围提供足够的区域以进​​行页面滑动,要么添加一些逻辑以允许您在手势之前将地图平移到一定距离被传递给ViewPager
猜你喜欢
  • 2012-04-24
  • 2012-07-02
  • 1970-01-01
  • 2013-08-18
  • 2011-09-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多