如何在片段类中加载WebView?如何在android中加载Webview?
我试图在应该加载的片段中创建一个WebView。我已经将它添加到我的xml文件中。但是,findViewById方法仅在扩展活动类时有效。还有什么我可以在片段中使用的吗 我已经测试了另一个问题的解决方案,但它不起作用如何在片段类中加载WebView?如何在android中加载Webview?,android,android-fragments,fragment,findviewbyid,Android,Android Fragments,Fragment,Findviewbyid,我试图在应该加载的片段中创建一个WebView。我已经将它添加到我的xml文件中。但是,findViewById方法仅在扩展活动类时有效。还有什么我可以在片段中使用的吗 我已经测试了另一个问题的解决方案,但它不起作用 public class OneFragment extends Fragment{ public WebView PlanWebView; public OneFragment() { // Required empty public constructor } @
public class OneFragment extends Fragment{
public WebView PlanWebView;
public OneFragment() {
// Required empty public constructor
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
PlanWebView WebView = (PlanWebView) getView().findViewById(R.id.PlanWebView);
// Unknown class: "PlanWebView";
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_one, container, false);
}
}
请试试这个,这是OneFragment类,Webview需要一个必须使用xml扩展的视图
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view=inflater.inflate(R.layout. fragment_one, container, false);
mWebView = (WebView) view.findViewById(R.id.webview);
mWebView.loadUrl("https://google.com");
// Enable Javascript
WebSettings webSettings = mWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
// Force links and redirects to open in the WebView instead of in a browser
mWebView.setWebViewClient(new WebViewClient());
return view;
}
和xml表示片段
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<WebView
android:id="@+id/webview"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</RelativeLayout>
在片段中,您可以在onCreateView方法中声明变量
public class OneFragment extends Fragment{
public WebView PlanWebView;
public OneFragment() {
// Required empty public constructor
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view=inflater.inflate(R.layout.fragment_one, container, false);
PlanWebView = (WebView)view.findViewById(R.id.PlanWebView);
return view;
}
}
您应该在
onCreateView
方法中使用下面的代码:
View view = inflater.inflate(layout,container,false);
WebView webview = (WebView) view.findViewById(R.id.webView);
return view;
谢谢你的回答!我还有一个问题。。。如何在片段中重新加载此WebView?没有碎片,在一个单一的主活动中,这是非常容易的。。。我在MainActivity中添加了一个菜单,但是我必须在哪里为菜单添加公共布尔值?如果我将其添加到One_Fragment.class中,我会在按下菜单中的更新按钮后发生崩溃。
@Override public boolean onOptionsItemSelected(MenuItem MenuItem){int id=MenuItem.getItemId();If(id==R.id.update){OneFragment.this.PlanWebView.loadUrl(“http://google.de"); }return false;}
您好,亲爱的,您能解释一下您的新问题吗?我无法获得它?您的意思是要从主活动重新加载webview吗?是的,完全正确。从MainActivity或一个_片段活动重新加载。好的,您应该使用接口来完成此操作,