In questo articolo vedremo come poter navigare nella cronologia (solo indietro) con il tasto indietro del dispositivo.
Normalmente con il tasto indietro del dispositivo si chiude l'applicazione, ma è possibile far eseguire altre operazioni.
Questo esempio permette di tornare indietro nelle pagine web visitate con un singolo tap sul tasto indietro del dispositivo mentre se la cronologia è vuota si chiude l'applicazione.
Questo è il codice che permette di navigare all'indietro nella cronologia
Questo è il codice che permette di verificare se è possibile tornare indietro nella cronologia, in pratica verifica se la cronologia è piena oppure vuota.
Ecco come si presenta il file MainActivity.kt
Come si può vedere la condizione che verifica se la cronologia è piena oppure vuota è stata inserita all'interno della funzione onBackPressed() dalla riga 118 - 125
Questo esempio prende spunto da questo articolo a cui è stata aggiunta la funzione goBack() di WebView.
Ecco un video dimostrativo
Normalmente con il tasto indietro del dispositivo si chiude l'applicazione, ma è possibile far eseguire altre operazioni.
Questo esempio permette di tornare indietro nelle pagine web visitate con un singolo tap sul tasto indietro del dispositivo mentre se la cronologia è vuota si chiude l'applicazione.
Questo è il codice che permette di navigare all'indietro nella cronologia
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//webview è il nome della variabile associata alla WebView | |
webview!!.goBack() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
if(webview!!.canGoBack()) { | |
//inserire cui il codice da eseguire se la cronologia è piena | |
} | |
else | |
{ | |
//inserire cui il codice da eseguire se la cronologia è vuota | |
} |
Ecco come si presenta il file MainActivity.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.dm.tutorialwebview8 | |
import android.app.Service | |
import android.graphics.Bitmap | |
import android.net.ConnectivityManager | |
import android.net.NetworkInfo | |
import android.os.Bundle | |
import android.support.v7.app.AppCompatActivity; | |
import android.view.Menu | |
import android.view.MenuItem | |
import android.view.View | |
import android.webkit.WebChromeClient | |
import android.webkit.WebView | |
import android.webkit.WebViewClient | |
import android.widget.Toast | |
import android.widget.Toast.* | |
import kotlinx.android.synthetic.main.activity_main.* | |
import kotlinx.android.synthetic.main.content_main.* | |
class MainActivity : AppCompatActivity() { | |
var webview: WebView? = null | |
//variabili aggiunte per le verifica della connessione internet | |
var context = this | |
var connectivity : ConnectivityManager? = null | |
var info : NetworkInfo? = null | |
//fine variabili per la verifica della connessione internet | |
override fun onCreate(savedInstanceState: Bundle?) { | |
super.onCreate(savedInstanceState) | |
setContentView(R.layout.activity_main) | |
setSupportActionBar(toolbar) | |
webview = findViewById(R.id.myweb) | |
webview!!.webViewClient = WebViewClient() | |
webview!!.settings.javaScriptEnabled = true | |
webview!!.webChromeClient = WebChromeClient() | |
webview!!.settings.domStorageEnabled = true | |
webview!!.settings.builtInZoomControls = true | |
webview!!.settings.setSupportZoom(true) | |
webview!!.overScrollMode = WebView.OVER_SCROLL_NEVER | |
webview!!.settings.useWideViewPort = true | |
webview!!.setInitialScale(1) | |
webview!!.loadUrl("https://davidetech.blogspot.com") | |
//controllo della connessione in fase di avvio dell'app | |
if(isConnected()) | |
{ | |
//aggiungere qui eventuale codice da eseguire se il dispositivo è connesso ad internet | |
} | |
else | |
{ | |
//aggiungere qui eventuale codice da eseguire se il dispositivo NON è connesso ad internet | |
Toast.makeText(context, "Non connesso ad internet", LENGTH_LONG).show() | |
} | |
//fine del controllo | |
if(webview != null) | |
{ | |
webview!!.webViewClient = object: WebViewClient(){ | |
override fun onPageStarted(view: WebView?, url: String?, favicon: Bitmap?) { | |
progressBar.visibility = View.VISIBLE | |
super.onPageStarted(view, url, favicon) | |
} | |
override fun onPageFinished(view: WebView?, url: String?) { | |
progressBar.visibility = View.GONE | |
super.onPageFinished(view, url) | |
} | |
} | |
} | |
} | |
//funzione che verifica lo stato della connessione internet | |
fun isConnected() : Boolean | |
{ | |
connectivity = context.getSystemService(Service.CONNECTIVITY_SERVICE) as ConnectivityManager | |
if(connectivity != null) | |
{ | |
info = connectivity!!.activeNetworkInfo | |
if(info != null) | |
{ | |
if(info!!.state == NetworkInfo.State.CONNECTED) | |
{ | |
return true | |
} | |
} | |
} | |
return false | |
} | |
//fine della funzione che verifica lo stato della connessione internet | |
override fun onCreateOptionsMenu(menu: Menu): Boolean { | |
// Inflate the menu; questo aggiunge elementi alla barra delle azioni se è presente. | |
menuInflater.inflate(R.menu.menu_main, menu) | |
return true | |
} | |
override fun onOptionsItemSelected(item: MenuItem): Boolean { | |
// Gestisci i clic degli elementi della barra delle azioni qui. | |
// La barra delle azioni gestirà automaticamente i clic sul pulsante Home / Su, | |
// purché si specifichi un'attività principale in AndroidManifest.xml. | |
when (item.itemId) { | |
R.id.action_refresh -> { | |
//modificato il reload con questa riga di codice | |
webview!!.loadUrl(webview!!.getUrl().toString()) | |
} | |
} | |
return true | |
} | |
//funzione che gestisce il tasto indietro (Back Key) del dispositivo | |
override fun onBackPressed(){ | |
/*Fino a quando la cronologia è piena si naviga indietro nelle pagine | |
altrimenti l'applicazione viene chiusa*/ | |
if(webview!!.canGoBack()) { | |
webview!!.goBack() | |
} | |
else | |
{ | |
//chiude l'applicazione | |
finish() | |
} | |
} | |
} |
Questo esempio prende spunto da questo articolo a cui è stata aggiunta la funzione goBack() di WebView.
Premendo il tasto indietro del dispositivo succede questo:
Ecco un video dimostrativo
Download Project | ![]() |
Download file APK | ![]() |
Commenti
Posta un commento