В основном у меня есть WebView во фрагменте, и есть класс java, который проверяет доступность сети. Я могу делать тосты для истинных и ложных условий. Но поскольку WebView находится в другом фрагменте, я не могу заставить его загружать URL-адрес. Таким образом, мой вопрос: Как я могу вызвать элемент из другого класса?Как я могу управлять WebView в фрагменте из другого класса?
Edit:
package com.sahin.spm;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.widget.Toast;
import layout.fragHome;
/**
* Created by PD on 27.1.2017.
*/
public class NetworkChangeReceiver extends BroadcastReceiver{
private static final String LOG_TAG = "Connection control";
static boolean isConnected = false;
@Override
public void onReceive(final Context context, final Intent intent) {
isNetworkAvailable(context);
}
private boolean isNetworkAvailable(Context context) {
ConnectivityManager connectivity = (ConnectivityManager)
context.getSystemService(Context.CONNECTIVITY_SERVICE);
if (connectivity != null) {
NetworkInfo[] info = connectivity.getAllNetworkInfo();
if (info != null) {
for (int i = 0; i < info.length; i++) {
if (info[i].getState() == NetworkInfo.State.CONNECTED) {
if(!isConnected){
isConnected = true;
Toast.makeText(context, "Connected!", Toast.LENGTH_LONG).show();
fragHome.loadWebViewUrl("http://www.google.com.tr");
}
return true;
}
}
}
}
isConnected = false;
Toast.makeText(context, "No connection!", Toast.LENGTH_LONG).show();
fragHome.loadWebViewUrl("file:///android_asset/noconnection.html");
return false;
}
}
Это мой класс, в котором я могу контролировать соединение и хочу WebView, чтобы загрузить страницу в соответствии с состоянием соединения. Нет ошибки, но при этом она не загружается.
fragHome.java
package layout;
import android.app.ProgressDialog;
import android.content.BroadcastReceiver;
import android.content.IntentFilter;
import android.net.ConnectivityManager;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.WebResourceRequest;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Toast;
import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.AdView;
import com.sahin.spm.NetworkChangeReceiver;
import com.sahin.spm.R;
public class fragHome extends Fragment {
private static final String LOG_TAG = "Auto control";
private NetworkChangeReceiver receiver;
private static WebView webView;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
final View rootView = inflater.inflate(R.layout.fragment_frag_home, container, false);
final WebView webView = (WebView) rootView.findViewById(R.id.hWebView);
webView.getSettings().setBuiltInZoomControls(false);
webView.getSettings().setSupportZoom(false);
webView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
webView.getSettings().setAllowFileAccess(true);
webView.getSettings().setDomStorageEnabled(true);
webView.getSettings().setJavaScriptEnabled(true);
webView.setWebViewClient(new WebViewClient(){
@Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
view.loadUrl(request.getUrl().toString());
return super.shouldOverrideUrlLoading(view, request);
}
});
IntentFilter filter = new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION);
receiver = new NetworkChangeReceiver();
getActivity().registerReceiver(receiver, filter);
return rootView;
}
public static void loadWebViewUrl(String url) {
if (webView != null) {
webView.loadUrl(url);
}
}
@Override
public void onDestroy() {
super.onDestroy();
getActivity().unregisterReceiver(receiver);
}
}
Хорошо, добавьте код fragHome. –
Добавлено. @ A.Badakhshan –
Является ли пользователь в fragHome, когда NetworkChangeReceiver запускает? –