Android webview下拉菜单在Android 4.x设备上无效

Android 4.x设备上的一个WebView出现问题。

Android应用有一个包含片段Tabhost 。 其中一个片段包含webview。 显示的页面有一个下拉菜单,如下所示:

  Testname 1 Testname 2 Testname 3  

现在,当我使用带有Android 4.1.1的Galaxy S3(或任何其他Android设备,我可以动手)打开我的应用程序时,我可以选择“Testname 1”,然后选择“Testname 2”,依此类推。

在Galaxy Nexus上(在运行Android 4.1.1,4.1.2和4.2的不同设备上确认)当我尝试选择UI时阻止的东西。 在我切换到另一个选项卡并突然返回到webview选项卡后,UI最终更改为先前选择的项目。

知道是什么导致了这个或我如何为Galaxy Nexus解决这个问题?

重要更新:我可以将其跟踪到Tabhost 。 当webviewtabhost中时它不起作用,当它不起作用时。 这可能与此问题有关 。

Solutions Collecting From Web of "Android webview下拉菜单在Android 4.x设备上无效"

实际上,使用ActionBar可以比使用TabHost做更多。 包括标签。 链接将允许您在旧版本minSdk = 4中实现ActionBar。我使用过的大多数用户体验开发人员都认为Tabs有点过时,尽管确实为用户提供了熟悉的用户界面,但我是谁要反对风? ActionBar为UI提供了非常Android的外观和干净的感觉。 link是来自该会议的Google推荐的UI模式的文档。 link是YouTubevideo,讨论会议的UI模式。 遵循这些建议可以更好地审查您的应用程序和更复杂的UI外观。 我不确定你的需求是什么,但如果你要做某事,不妨做对吗? 如果您需要更多帮助,请告诉我。 我可以为您提供有关使用ActionBar的示例。 ActionBar链接可以为您提供更好的理由,为什么它是UI的一个很好的选择。

您是否正确实施了碎片? link是使用它们的文档。 如果你使用动态片段而不是布局中实现的固定片段,我在跨应用程序编写时发现的一个技巧就是调用.clearBackStack(); 当我遇到有趣的问题时,似乎解决了很多问题。

TabS中的TabHost? 您使用兼容包吗? 如果你基本上在3.1+工作,正确的设计是使用ActionBar来实现Tabs。

尝试在XML布局中使用此自定义类,而不是普通的TabHost:

 package com.example.test; import android.content.Context; import android.util.AttributeSet; import android.widget.TabHost; public class TabHostFix extends TabHost { public TabHostFix(Context context) { super(context); } public TabHostFix(Context context, AttributeSet attrs) { super(context, attrs); } @Override public void onTouchModeChanged(boolean isInTouchMode) { //do not call through to base class, do nothing //this is a fix for tabhost stealing focus from textboxes } } 

在XML布局中引用自定义类,如下所示:

 < ?xml version="1.0" encoding="utf-8"?>        

编辑:作为替代解决方案,您可以使用支持库中的ViewPager和模仿选项卡的自定义View Pager指示器完全替换TabHost。 我之前从未尝试过这个,但我已经读到这里有很好的免费第三方视图寻呼机指示器。

选择选择后,列表项数据可能会更改,但我们无法看到更改。 为此,我们需要显式刷新select组件。 希望这可以解决问题。

$("select#HeightUnit option[value='cm']").attr("selected", "selected"); $('select').selectmenu('refresh');

 > i think u must add the API version on your activity cause some UI cannot compatible on >android API 8. so check the API SDK like this. >@TargetApi(Build.VERSION_CODES.GINGERBREAD) >if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.GINGERBREAD) >{ >// condisition >}