Search code examples
javaandroidonbackpressed

1 Click -> Go back / / Can't go back --> close


Is there a nice way to fix this Problem?

In my Webview I can go back if click on the backbutton. I need a way to go back if I click once, and if I can't go back (startdisplay/startside) it should say "Click once more to Exit the app" with a toast. Is this possible?

public class MainActivity extends AppCompatActivity {

private ImageButton Ilias_link;
private ImageButton Lsf_link;
private WebView mWebView;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


    Ilias_link = (ImageButton) findViewById(R.id.ilias_link);
    mWebView = new WebView(this);
    Ilias_link.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            mWebView.getSettings().setJavaScriptEnabled(true);
            mWebView.loadUrl("https://elearns02.fh-biberach.de/ilias3/login.php?target=&soap_pw=&ext_uid=&cookies=nocookies&client_id=HSBC&lang=de");
            mWebView.setWebViewClient(new WebViewClient());
            setContentView(mWebView);

        }
    });

    Lsf_link = (ImageButton) findViewById(R.id.lsf_link);
    mWebView = new WebView(this);
    Lsf_link.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            mWebView.getSettings().setJavaScriptEnabled(true);
            mWebView.loadUrl("https://lsf.fh-biberach.de/qisserver/rds?state=user&type=0");
            mWebView.setWebViewClient(new WebViewClient());
            setContentView(mWebView);
        }
    });
}



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

}


Solution

  • Hello I suggest you a different method based on time. Because after user see toast message that warning about exit, she/he shouldn't want to exit app.

    boolean doubleBack = false;
    @Override
    public void onBackPressed() {
        if (mWebView.canGoBack()) {
            mWebView.goBack();
            return ;
        }
    
        if (doubleBack) {
            super.onBackPressed();
            return;
        }
    
        doubleBack = true;
        Toast.makeText(this, "Click once more to Exit the app", Toast.LENGTH_SHORT).show();
    
        new Handler().postDelayed(new Runnable() {
    
            @Override
            public void run() {
                doubleBack = false;                       
            }
        }, 2000);
    }