Autore Topic: WebView Problema coll'Imagebutton back e forward  (Letto 520 volte)

Offline Hildian

  • Utente junior
  • **
  • Post: 60
  • Respect: 0
    • Google+
    • Mostra profilo
  • Dispositivo Android:
    Meizu M1 Note
  • Sistema operativo:
    Mac OS X 10.8.5 e Windows 7
WebView Problema coll'Imagebutton back e forward
« il: 07 Marzo 2014, 20:37:59 CET »
0
Salve a tutti sono nuovo in questo forum.
Ho 16 anni e programmo Android da circa 3 mesi acquistando un libro "Creare app Per Android - Progettazione e sviluppo".
imparando un po' le basi me la cavo a fare delle semplici app. A scuola mia c'è un concorso interno un "got talent" in cui ogni alunno inscritto presenta un progetto, ed io ho deciso di realizzare una app che mostra il sito della scuola più semplice ed intuitivo.
questo è il codice java
Codice (Java): [Seleziona]
package com.************.webiti;

import android.os.Bundle;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.ImageButton;
import android.widget.RelativeLayout;
import android.widget.Toast;



public class MainActivity extends Activity {
        String url;
        WebView webview;
        final Activity activity = this;
        ImageButton img1;
        ImageButton img2;
       

        @SuppressLint("SetJavaScriptEnabled")
        @Override
        protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_main);
                RelativeLayout layout= (RelativeLayout)findViewById(R.id.root);
                                layout.setBackgroundResource(R.drawable.backgraund);
                webview = (WebView) findViewById(R.id.sito);
                webview.getSettings().setBuiltInZoomControls(true);
        webview.getSettings().setJavaScriptEnabled(true);  
       forwardImageButton();
       configureImageButton();
     
     
         
     
       
    webview.setWebChromeClient(new WebChromeClient()
    {
        public void onProgressChanged(WebView view, int progress)
        {
            activity.setTitle("Loading...");
           
                activity.setProgress(progress * 100);

                if(progress == 100)
                    activity.setTitle(R.string.app_name);
               
            }
       
        });
    webview.setWebViewClient(new WebViewClient()
        {
            @Override
            public void onReceivedError(WebView view, int errorCode, String description, String failingUrl)
            {
              Toast.makeText(getBaseContext(),
                          R.string.errore,
                          Toast.LENGTH_LONG).show();
            }

            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url_poi)
            {
                view.loadUrl(url_poi);
                return true;
            }
        });
    webview.loadUrl("http://www.iti*******.it");  
       
       
    }
       

       
   
       

        private void configureImageButton() {
                img1 = (ImageButton)findViewById(R.id.back);
                img1.setOnClickListener(new View.OnClickListener() {
                       
                        @Override
                        public void onClick(View v) {
                                if(webview.canGoBack()){
                                     webview.goBack();
                                }
                                     finish();
                        }      
                       
                });
               
        }
       
        private void forwardImageButton() {
                img2 = (ImageButton)findViewById(R.id.avanti);
                img2.setOnClickListener(new View.OnClickListener() {
                       
                        @Override
                        public void onClick(View v) {
                                if(webview.canGoForward()){
                                     webview.goForward();
                                }
                                     finish();
                                       
                        }
                });
               
        }
       
 



Ho un grande problema quando premo l'imagebutton back e forward nella pagina principale mi si chiude la app sapete aiutarmi??

Offline maku85

  • Nuovo arrivato
  • *
  • Post: 28
  • Respect: +35
    • Mostra profilo
  • Dispositivo Android:
    Sony Xperia J
  • Play Store ID:
    MaKu
  • Sistema operativo:
    Windows 8.1
Re:WebView Problema coll'Imagebutton back e forward
« Risposta #1 il: 08 Marzo 2014, 00:31:29 CET »
0
L'applicazione viene chiusa quando si richiama il metodo finish(). L'errore nel tuo codice sta nel non aver messo la chiamata al metodo di chiusura nel ramo else, quindi la pagina torna indietro/avanti ma dopo si chiude.
Dovresti invece scrivere
Codice (Java): [Seleziona]
@Override
public void onClick(View v) {
if(webview.canGoBack()){
  webview.goBack();
}else {
  finish();
}

stessa cosa per l'altro tasto.
- Il programmatore è colui che risolve in un modo incomprensibile un problema che non sapevi di avere -

Offline Hildian

  • Utente junior
  • **
  • Post: 60
  • Respect: 0
    • Google+
    • Mostra profilo
  • Dispositivo Android:
    Meizu M1 Note
  • Sistema operativo:
    Mac OS X 10.8.5 e Windows 7
Re:WebView Problema coll'Imagebutton back e forward
« Risposta #2 il: 08 Marzo 2014, 06:21:51 CET »
0
Grazie mille

Inviato dal mio GT-I9505 utilizzando Tapatalk


Offline Hildian

  • Utente junior
  • **
  • Post: 60
  • Respect: 0
    • Google+
    • Mostra profilo
  • Dispositivo Android:
    Meizu M1 Note
  • Sistema operativo:
    Mac OS X 10.8.5 e Windows 7
Re:WebView Problema coll'Imagebutton back e forward
« Risposta #3 il: 08 Marzo 2014, 06:44:39 CET »
0
Ho provato il codice e ti ringrazio della soluzione ma è nato un altro problema se per caso premo il tasto back nella pagina home si chiude l'app e lo stesso se premo avanti avanti fino all'ultima pagina in cui ero amdato si chiude l'app.
Sapete aiutarmi?

Inviato dal mio GT-I9505 utilizzando Tapatalk


Offline maku85

  • Nuovo arrivato
  • *
  • Post: 28
  • Respect: +35
    • Mostra profilo
  • Dispositivo Android:
    Sony Xperia J
  • Play Store ID:
    MaKu
  • Sistema operativo:
    Windows 8.1
Re:WebView Problema coll'Imagebutton back e forward
« Risposta #4 il: 08 Marzo 2014, 23:23:25 CET »
0
Come ti dicevo ciò che fa chiudere l'app e la chiamata al metodo finish(), dipende quindi da cosa vuoi far fare all'app, se non vuoi che venga chiusa basta che togli la chiamata al metodo finish() in tutti e due i metodi.
- Il programmatore è colui che risolve in un modo incomprensibile un problema che non sapevi di avere -