Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/184.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在片段类中加载WebView?如何在android中加载Webview?_Android_Android Fragments_Fragment_Findviewbyid - Fatal编程技术网

如何在片段类中加载WebView?如何在android中加载Webview?

如何在片段类中加载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 } @

我试图在应该加载的片段中创建一个WebView。我已经将它添加到我的xml文件中。但是,findViewById方法仅在扩展活动类时有效。还有什么我可以在片段中使用的吗

我已经测试了另一个问题的解决方案,但它不起作用

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或一个_片段活动重新加载。好的,您应该使用接口来完成此操作,