URL загрузки WebView во фрагменте из другого класса

Я хочу вызвать метод для загрузки URL-адреса в классе фрагмента из другого класса, но я получаю нулевое значение для веб-просмотра. Ниже мой код.

public class WebViewFragment extends Fragment                                                                                                                             
{                                                                                              
     String url;
     Context context;
     public WebView webViewSite;

     public WebViewFragment()                                               
     {
     }
     public void init(String currentURL, Context context1) 
     {
         url = currentURL;
         context = context1;
     }

     @Override
     public View onCreateView(LayoutInflater inflater, ViewGroup    container,Bundle savedInstanceState)
     {

         View view = inflater.inflate(R.layout.activity_webview_site, container, false);
         webViewSite = (WebView)view.findViewById(R.id.webViewSite);
         webViewSite.getSettings().setJavaScriptEnabled(true);
         webViewSite.addJavascriptInterface(new JsInterface(context),"AndroidJSObject");
         webViewSite.setWebViewClient(new SwAWebClient());
         webViewSite.setWebChromeClient(new SwAWebChromeClient());
         loadURL(Configuration.MOBILE_SITE_URL);
         return view;
    }
    public  void loadURL(String url)
    {
        webViewSite.loadUrl(url, Configuration.appRequestHeaders);
    }

}

из класса ниже я вызываю метод loadURL, но для этого я получаю нулевой экземпляр web view.

      public class JsInterface                                                                                          
      {                                                                                                                         
           Handler myHandler;
           private Context mContext;  
           public JsInterface(Context c)
           {
               mContext = c;
               myHandler = new Handler();
           }
           @JavascriptInterface
           public void loadFromBaseUrl()
           {
              myHandler.post(new Runnable()
              {
                 @Override
                 public void run()
                 {
                     Toast.makeText(mContext,"Please Wait",Toast.LENGTH_SHORT).show();
                     new      WebViewFragment().loadURL(Configuration.MOBILE_SITE_URL);
                 }
             });
       }
  }           

1 ответ

new WebViewFragment() делает ваш веб-просмотр нулевым. Вместо этого вы можете сделать статический метод loadURL лайк:

 public static void loadURL(String url)
    {
        webViewSite.loadUrl(url, Configuration.appRequestHeaders);
    }

и назовите это как -

WebViewFragment.loadURL(Configuration.MOBILE_SITE_URL);
Другие вопросы по тегам