21

我的一台WebViewAndroid 4.x 设备有问题。

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

<select id="mySelect" name="mySelect">
    <option value="1">Testname 1</option>
    <option value="2">Testname 2</option>
    <option value="3">Testname 3</option>
</select>

现在,当我使用带有 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. 当它webview在其中tabhost时它不起作用,当它不在时它起作用。这可能与这个问题有关。

4

5 回答 5

1

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

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

于 2012-12-21T12:52:41.553 回答
0

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

于 2012-12-19T21:02:44.690 回答
0

选择选择后,列表项数据可能会发生变化,但我们看不到变化。为此,我们需要显式刷新选择组件。希望这可以解决问题。

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

于 2013-06-10T14:07:20.180 回答
0

尝试在您的 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"?>
<com.example.test.TabHostFix xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/tabhost"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <LinearLayout
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        <TabWidget
            android:id="@android:id/tabs"
            android:orientation="horizontal"
            android:layout_width="match_parent"
            android:layout_height="48dp"
            android:layout_weight="0"/>
        <FrameLayout
            android:id="@android:id/tabcontent"
            android:layout_width="0dp"
            android:layout_height="0dp"
            android:layout_weight="0" />
        <FrameLayout
            android:id="@+android:id/realtabcontent"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1" />
    </LinearLayout>
</com.example.test.TabHostFix>

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

于 2013-01-29T05:15:30.823 回答
-2
> 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
>}
于 2013-07-03T04:46:20.833 回答