Error when referencing global variable

0

I have an application that has a webview, so I created a preloader to load into a thread, now I need to put the webview on another thread, how can I do it (error in code)?

import android.os.SystemClock;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.net.ConnectivityManager;
import android.content.Context;
import android.net.NetworkInfo;
import android.net.Network;
import android.widget.ProgressBar;

public class ConectActivity extends Activity {


    private WebView webView;
    private ProgressBar progress;

    public  boolean verificaConexao() {
        boolean conectado;
        ConnectivityManager conectivtyManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
        if (conectivtyManager.getActiveNetworkInfo() != null
                && conectivtyManager.getActiveNetworkInfo().isAvailable()
                && conectivtyManager.getActiveNetworkInfo().isConnected()) {
            conectado = true;
        } else {
            conectado = false;
        }
        return conectado;
    }



    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_conect);
        // *** roda qnd abre - Augusto Furlan ***
        Boolean conect = verificaConexao();
        String url = "http://google.com";
        webView = (WebView) findViewById(R.id.webView);
        progress = (ProgressBar) findViewById(R.id.progress);
        //webView.setWebViewClient(new CustomWebViewClient());
        webView.setVisibility(webView.GONE);

        WebSettings ws = webView.getSettings();
        ws.setJavaScriptEnabled(true);
        ws.setSupportZoom(true);
        webView.setWebViewClient(new WebViewClient());



        new Thread(new Runnable() {
            @Override
            public void run() {
                SystemClock.sleep(25000);

                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        showWebView();
                    }
                });
            }
        }).start();

        new Thread(new Runnable() {
            @Override
            public void run() {
                if(self.conect == true) {
                    webView.loadUrl(self.url);
                } else {webView.loadUrl("file:///android_asset/not-found.html");;}

                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        showWebView();
                    }
                });
            }
        }).start();
        }



    private void showWebView() {
        webView.setVisibility(View.VISIBLE);
        progress.setVisibility(View.GONE);
    }

}
    
asked by anonymous 26.10.2015 / 13:50

1 answer

0

If you want to access the attributes conect and url of the ConectActivity class you must do so directly, using their names. The word self does not exist in JAVA.

For these attributes to be used in a inner class, however, they must be declared as final :

@Override
protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_conect);

    final Boolean conect = verificaConexao();
    final String url = "http://google.com";

    ...
    ...
    new Thread(new Runnable() {
        @Override
        public void run() {
            if(conect == true) {
                webView.loadUrl(url);
            } else {webView.loadUrl("file:///android_asset/not-found.html");;}

            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    showWebView();
                }
            });
        }
    }).start();
}
    
26.10.2015 / 14:52