coverting android java webview project to kotlin

Viewed 41

Hello to all kind people

I have a Java webview project , and after I converted it to kotlin using " Control + Alt + Shift + K " Keys , I have got error on a variable that named " mWebView " here is MainActivity.jave file codes :

public class MainActivity extends Activity {

    private WebView mWebView;

    @Override
    @SuppressLint("SetJavaScriptEnabled")
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mWebView = findViewById(R.id.activity_main_webview);
        WebSettings webSettings = mWebView.getSettings();
        webSettings.setJavaScriptEnabled(true);
        mWebView.setWebViewClient(new MyWebViewClient());

        // REMOTE RESOURCE
         mWebView.loadUrl("https://fa.azdamghest.com/test-canvas/");

        // LOCAL RESOURCE
        // mWebView.loadUrl("file:///android_asset/index.html");
    }

    @Override
    public void onBackPressed() {
        if(mWebView.canGoBack()) {
            mWebView.goBack();
        } else {
            super.onBackPressed();
        }
    }
}

And Here is Converted MainActivity to Kotlin :

class MainActivity : Activity() {
    private var mWebView: WebView? = null

    @SuppressLint("SetJavaScriptEnabled")
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        mWebView = findViewById(R.id.activity_main_webview)
        val webSettings = mWebView.getSettings()
        webSettings.javaScriptEnabled = true
        mWebView.setWebViewClient(MyWebViewClient())

        // REMOTE RESOURCE
        mWebView.loadUrl("https://fa.azdamghest.com/test-canvas/")

        // LOCAL RESOURCE
        // mWebView.loadUrl("file:///android_asset/index.html");
    }

    override fun onBackPressed() {
        if (mWebView!!.canGoBack()) {
            mWebView!!.goBack()
        } else {
            super.onBackPressed()
        }
    }
}

You can see mWebView showing in Red Color

Thanks a Lot From Now

1 Answers

Since mWebView is nullable, you should use safe call operator (?.) wherever using it. So, instead of mWebView.getSettings(), you should use mWebView?.getSettings().

Related