【问题标题】:WebView - No connection and content fragmentWebView - 没有连接和内容片段
【发布时间】:2013-12-07 16:02:07
【问题描述】:

我想在应用程序连接到互联网时显示正常的 webview(实际上这就是我所拥有的并想要添加第二个片段),但是当它没有连接到互联网时(它可以工作,但它显示网页不可用,默认android 浏览器,我不想要它),我想显示另一个带有文本视图和按钮 TRY AGAIN 的片段。有人可以帮助我吗?我正在使用 SherlockFragment,在下面我使用 Webview 发布代码,而没有另一个片段。感谢您的任何回答。

    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View v = inflater.inflate(R.layout.layout, container, false);
        if (isOnline()){
        WebView myWebView = (WebView) v.findViewById(R.id.id);

        final ProgressDialog progressDialog;
        progressDialog = new ProgressDialog(getActivity());
        progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
        progressDialog.setMessage("Prosím čakajte. Prebieha načítavanie...");
        progressDialog.setCancelable(true);
        progressDialog.setProgress(0);
        progressDialog.show();

        myWebView.setWebChromeClient(new WebChromeClient() {
            public void onProgressChanged(WebView view, int progress) {
                  if(progressDialog != null)
                      progressDialog.setProgress(0);
                      getActivity().setProgress(progress * 1000);
                      progressDialog.incrementProgressBy(progress);
                      if (progress == 100 && progressDialog.isShowing())
                          progressDialog.dismiss();
                  }

      });

        myWebView.getSettings().setBuiltInZoomControls(false); 
        myWebView.getSettings().setSupportZoom(false);
        myWebView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);   
        myWebView.getSettings().setAllowFileAccess(true); 
        myWebView.getSettings().setDomStorageEnabled(true);
        myWebView.getSettings().setJavaScriptEnabled(true);

        myWebView.loadUrl("webpage");        
    }
        else{
            Intent intent = new Intent(getActivity(), class.class);
            getActivity().startActivity(intent);
        }
        return v;
    }
    private boolean isOnline() {

        ConnectivityManager conMgr = (ConnectivityManager) context.getSystemService (Context.CONNECTIVITY_SERVICE);
        if (conMgr.getActiveNetworkInfo() != null
        && conMgr.getActiveNetworkInfo().isAvailable()
        && conMgr.getActiveNetworkInfo().isConnected()) {
        return true;

        } else {
        Log.v(getTag(), "Internet Connection Not Present");
        return false;
        }
    }
  }

记录猫

12-08 09:17:57.852: E/AndroidRuntime(17630): FATAL EXCEPTION: main
12-08 09:17:57.852: E/AndroidRuntime(17630): java.lang.NullPointerException
12-08 09:17:57.852: E/AndroidRuntime(17630):    at sk.soszm.polytechnicka.Novinky.isOnline(Novinky.java:71)
12-08 09:17:57.852: E/AndroidRuntime(17630):    at sk.soszm.polytechnicka.Novinky.onCreateView(Novinky.java:31)
12-08 09:17:57.852: E/AndroidRuntime(17630):    at android.support.v4.app.Fragment.performCreateView(Fragment.java:1478)
12-08 09:17:57.852: E/AndroidRuntime(17630):    at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:927)
12-08 09:17:57.852: E/AndroidRuntime(17630):    at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1104)
12-08 09:17:57.852: E/AndroidRuntime(17630):    at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682)
12-08 09:17:57.852: E/AndroidRuntime(17630):    at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1460)
12-08 09:17:57.852: E/AndroidRuntime(17630):    at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:440)
12-08 09:17:57.852: E/AndroidRuntime(17630):    at android.os.Handler.handleCallback(Handler.java:725)
12-08 09:17:57.852: E/AndroidRuntime(17630):    at android.os.Handler.dispatchMessage(Handler.java:92)
12-08 09:17:57.852: E/AndroidRuntime(17630):    at android.os.Looper.loop(Looper.java:137)
12-08 09:17:57.852: E/AndroidRuntime(17630):    at android.app.ActivityThread.main(ActivityThread.java:5039)
12-08 09:17:57.852: E/AndroidRuntime(17630):    at java.lang.reflect.Method.invokeNative(Native Method)
12-08 09:17:57.852: E/AndroidRuntime(17630):    at java.lang.reflect.Method.invoke(Method.java:511)
12-08 09:17:57.852: E/AndroidRuntime(17630):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
12-08 09:17:57.852: E/AndroidRuntime(17630):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
12-08 09:17:57.852: E/AndroidRuntime(17630):    at dalvik.system.NativeStart.main(Native Method)

【问题讨论】:

    标签: android android-fragments webview


    【解决方案1】:

    您可以监控设备是否连接到互联网。如果未连接,只需将WebView 的可见性设置为GONE 并显示一条短信。

    使用它来检查互联网连接:

    ConnectivityManager cm =
            (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
    
    NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
    boolean isConnected = activeNetwork != null &&
                          activeNetwork.isConnectedOrConnecting();
    

    来源:http://developer.android.com/training/monitoring-device-state/connectivity-monitoring.html

    获得连接状态后,请执行以下操作:

    if(isConnected) {
      //your WebView code
    } else {
      //TextView showing "Try Again"
    }
    

    您可以使用setVisibility(int) 以编程方式显示/隐藏视图

    来源:http://developer.android.com/reference/android/view/View.html#setVisibility%28int%29

    【讨论】:

    • 感谢您的回复,我尝试实现我的代码,但它不起作用。你能检查一下我编辑的代码吗?谢谢。同时发布 LogCat
    • @user2900523 第 71 行是什么?
    • @user2900523 顺便说一句,您是否在AndroidManifest.xml 文件中授予了<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> <uses-permission android:name="android.permission.INTERNET" /> 的权限?
    • 我拥有<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> 的权限,第 71 行是 `private boolean isOnline() { `
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多