我有3个片段,每个片段,我都希望显示不同网址的WebView
。
片段1的示例,在我添加的xml文件中:
<WebView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/webView"
android:layout_alignParentTop="true"
android:layout_alignParentStart="true"
android:layout_alignParentBottom="true"
android:layout_alignParentEnd="true" />
但是在我的java文件中我有这个:
package com.domain.app;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.WebView;
/**
* A simple {@link Fragment} subclass.
*/
public class Fragment_Home extends Fragment {
public Fragment_Home() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_home, container, false);
}
}
我从另一个Android项目获得了以下代码:
myWebView = (WebView)findViewById(R.id.webView);
WebSettings webSettings = myWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
myWebView.loadUrl("http://www.google.com");
myWebView.setWebViewClient(new WebViewClient());
位于MainActivity
,但如何将此代码放入我的片段?
答案 0 :(得分:0)
由于您是在片段中执行此操作,因此您需要展开并引用您的webview所在的视图。因此,请将onCreate更改为:
WebView myWebView;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
//creating and referencing our View
View view = inflater.inflate(R.layout.fragment_home,container,false);
//The key difference is we reference our view with the findViewById
myWebView = (WebView) view.findViewById(R.id.webView);
WebSettings webSettings = myWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
myWebView.loadUrl("http://www.google.com");
myWebView.setWebViewClient(new WebViewClient());
return view;
}
在这里,您可以看到我将其更改为实际引用您要从中提取的视图,从而可以更新该视图的组件。在操作片段的组件时,您始终需要引用父视图。