Search code examples
javaandroidandroid-activity

How to avoid White screen when switching between Activities


I am starting an Activity from Intent. In my code I have more number of Activities. But only in one Specific Activity, when trying to launch from an Intent, getting Blank White screen and after that Activity is getting load. So I thought of displaying ProgressBar. But ProgressBar also displayed after White screen. How to avoid displaying White screen?Thanks in advance.

getWebViewUrlSuccessResponse method is called when getting response from Retrofit request. Below is my first activity,

@Override
    public void getWebViewUrlSuccessResponse(String url,String id,String currency) {

        Intent intent=new Intent(FirstActivity.this, WebViewActivity.class);
        intent.putExtra("url",url);
        intent.putExtra("id",id);
        intent.putExtra("name",name);
        intent.putExtra("password",password);
        intent.putExtra("code",code);
        intent.putExtra("currency",currency);
        startActivity(intent);
    }

This is my second activity

 protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        AndroidLogger.log(5,TAG,"WEBVIEW");
        getWindow().requestFeature(Window.FEATURE_PROGRESS);
        setContentView(R.layout.activity_webview);
        AndroidLogger.log(5,TAG,"progress bar made visible");
       Intent intent=getIntent();
        RelativeLayout layout = findViewById(R.id.payment_gateway_relative_layout);
        ProgressBar progressBar = new ProgressBar(PaymentGatewayActivity.this,null,android.R.attr.progressBarStyleSmallInverse);
        progressBar.setIndeterminate(true);
        progressBar.setVisibility(View.VISIBLE);
        RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(100,100);
        params.addRule(RelativeLayout.CENTER_IN_PARENT);
        layout.addView(progressBar,params);

        //setContentView(layout);
       this.name=intent.getStringExtra("name");
       this.url=intent.getStringExtra("url");
       this.id=intent.getStringExtra("id");
       this.code=intent.getStringExtra("code");
       this.password=intent.getStringExtra("password");
       this.currency=intent.getStringExtra("currency");
        webView =(WebView)findViewById(R.id.webView);
        webView.setWebViewClient(new WebViewClient());
        webView.getSettings().setJavaScriptEnabled(true);
        webView.getSettings().setDomStorageEnabled(true);
        webView.setOverScrollMode(WebView.OVER_SCROLL_NEVER);
        webView.loadUrl(url);

        webView.setWebViewClient(new WebViewClient() {

        public boolean shouldOverrideUrlLoading(WebView view, String url) {

                // do your handling codes here, which url is the requested url
                // probably you need to open that url rather than redirect:
                AndroidLogger.log(5, TAG, "url:" + url);
                AndroidLogger.log(5, TAG, "view.geturl" + view.getUrl());
               //AndroidLogger.log(5,TAG,view.goBack()); view.canGoBack();

               view.loadUrl(url);

                return false; // then it is not handled by default action
            }

            @Override
            public void onPageStarted(WebView view, String url, Bitmap favicon) {
                super.onPageStarted(view, url, favicon);

                progressBar.setVisibility(View.VISIBLE);
                AndroidLogger.log(5,TAG,"started"+url);

            }

            @Override
            public void onPageFinished(WebView view, String url) {
                super.onPageFinished(view, url);
                AndroidLogger.log(5,TAG,"Finished"+url);

                webView.setVisibility(View.VISIBLE);


            }

        });
    }

Solution

  • line webView.loadUrl(url); causes White Screen..Because in my code I am using postUrl to load webview which I didnt mention in code. Two times I am trying to load URL. That is the problem. After removing that line everything works fine. Thank you all who tried to help me.