4

「android.support.v4.view.ViewPager」のプロジェクトに取り組んでいます。2 つのタブがあり、これらの各タブで別の WebView を表示したいと考えています。これらのタブの 1 つのコードとそのレイアウトは次のとおりです。

TabOne.java

public class TabOne extends Fragment
{
 WebView myWebView;
 @Override
    public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState)
{
        View view = inflater.inflate(R.layout.tabone, container, false);
            WebView myWebView = (WebView) view.findViewById(R.id.webview);
    myWebView.loadUrl("file:///android_asset/help/index.html");
    return view;
}
}

tabone.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >

<WebView  xmlns:android="http://schemas.android.com/apk/res/android"
   android:id="@+id/webview"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent" />

</LinearLayout>

問題は、最初のタブで WebView が正しく読み込まれることです。宣言されているのとまったく同じであるもう一方のタブでは、要素にフォーカスできず、強制的に閉じることがあります。エラーのある 2 番目のタブを使用していて、向きを横に切り替えると、2 番目のタブは完全に読み込まれますが、最初のタブに切り替えるとエラーが発生します。LogCat エラーは次のとおりです。

11-18 09:00:37.460: E/webcoreglue(29444): Should not happen: no rect-based-test nodes found
4

3 に答える 3

1

これは、またはAndroid 4.1 (およびおそらくそれ以降)のバグのようです。ViewPagerWebView

残念ながらWebView、ポケットベルの 2 ページ目以降にいることに対する回避策はありません。

于 2013-01-16T13:55:37.597 に答える
0

クラスを拡張してオーバーライドすることWebViewViewPager、この問題を修正しました。onTouchEvent()WebView

これが私のコードです:

@Override public boolean onTouchEvent(MotionEvent event) { if (event.getAction() == MotionEvent.ACTION_DOWN) {
requestFocusFromTouch(); } return super.onTouchEvent(event); }

乾杯!

于 2014-12-02T12:10:55.457 に答える
0

Java では、MyWebViewWebViewのサブクラスとして作成します。

public class MyWebView extends WebView {

    public MyWebView(Context context) {
        super(context);
    }

    public MyWebView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        onScrollChanged(getScrollX(), getScrollY(), getScrollX(), getScrollY());
        return super.onTouchEvent(event);
    }
}

レイアウト xml で、WebViewの代わりにMyWebViewを使用する

<your.package.MyWebView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/web_view"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />
于 2014-04-06T04:32:15.653 に答える