【问题标题】:How to Load WebView in Fragment class? How to load Webview in android?如何在 Fragment 类中加载 WebView?如何在android中加载Webview?
【发布时间】:2017-11-16 06:06:42
【问题描述】:

我正在尝试在应该加载的 Fragment 中创建一个 WebView。我已经将它添加到我的 xml 文件中。但是,findViewById 方法仅在我扩展 Activity 类时才有效。无论如何,我也可以在 Fragment 中使用它吗?

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

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);
}

}

【问题讨论】:

    标签: android android-fragments fragment findviewbyid


    【解决方案1】:

    请试试这个,这是 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 用于 fragment_one

    <?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>
    

    【讨论】:

    • 感谢您的回答!我还有另一个问题...我如何在 Fragment 中重新加载此 WebView?没有 Fragments 并且在单个 MainActivity 中很容易......我在 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 或 One_Fragment Activity 重新加载。
    • 好的,你应该使用接口来做到这一点,stackoverflow.com/questions/21228721/…
    【解决方案2】:

    在 Fragment 中,您可以在 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;
       }
    
     }
    

    【讨论】:

      【解决方案3】:

      您应该在onCreateView 方法中使用以下代码:

      View view = inflater.inflate(layout,container,false);
      
      WebView webview = (WebView) view.findViewById(R.id.webView);
      
      return view;
      

      【讨论】:

        猜你喜欢
        • 2015-02-25
        • 2014-06-21
        • 2012-09-15
        • 1970-01-01
        • 1970-01-01
        • 2011-06-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多