Eclipse Android WebView bakåt knapp

Diskussion i 'Frågor, support och diskussion' startad av Hassaninho, 23 jul 2013.

  1. Hassaninho

    Hassaninho Baby Droid Medlem

    Blev medlem:
    18 feb 2012
    Inlägg:
    18
    Mottagna gillanden:
    0

    MINA ENHETER

    Hej.
    Är nybörjare och har gjort en app med eclipse och fixat en webview.
    Min tillbaka knapp på mobilen stänger av hela appen.
    Hur fixar jag att den går ett steg tillbaka istället?

    Skickat från min GT-I9505 via Tapatalk 2
     
  2. e7andy

    e7andy Professional Droid Hedersmedlem

    Blev medlem:
    14 okt 2009
    Inlägg:
    2 349
    Mottagna gillanden:
    835
    Telefon:
    Huawei P10 Plus

    MINA ENHETER

    Telefon:
    Huawei P10 Plus
    Telefon 2:
    Nexus 5
    Telefon 3:
    ADP1
    Övrigt:
    LG G Watch R, ChromeCast
  3. Hassaninho

    Hassaninho Baby Droid Medlem

    Blev medlem:
    18 feb 2012
    Inlägg:
    18
    Mottagna gillanden:
    0

    MINA ENHETER

    Hej, tack för ditt svar.
    Jag har testat detta du skriver men inte fått det till att funka, har varit inne på den sidan tidigare.

    Jag kanske lägger in koden på fel ställe.
    Så ser mina sidor ut:

    MainActivity.java:
    PHP:
    package mobile.neymar;

    import android.os.Bundle;
    import android.annotation.SuppressLint;
    import android.app.Activity;
    import android.view.Menu;
    import android.webkit.WebView;

    public class 
    MainActivity extends Activity {

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

            
    //Appens WebView Adress
            
    String url "http://www.google.se";
            
    WebView view = (WebViewthis.findViewById(R.id.webView1);
          
            
            
    view.getSettings().setJavaScriptEnabled(true);
            
    view.loadUrl(url);  
        }
        
        @
    Override
            
    public boolean onCreateOptionsMenu(Menu menu) {
            
    // Inflate the menu; this adds items to the action bar if it is present.
            
    getMenuInflater().inflate(R.menu.mainmenu);
            return 
    true;   
        }   
    }
    AndroidManifest.xml:
    PHP:
    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="mobile.neymar"
        android:versionCode="4"
        android:versionName="1.0.3" >

        <uses-sdk
            android:minSdkVersion="8"
            android:targetSdkVersion="17" />
        <uses-permission android:name="android.permission.INTERNET"/>

        <application
            android:allowBackup="true"
            android:icon="@drawable/ic_launcher"
            android:label="@string/app_name"
            android:theme="@android:style/Theme.NoTitleBar" android:killAfterRestore="true">
            <activity
                android:name="mobile.fragaimamen.MainActivity"
                android:label="@string/app_name" >
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />

                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
        </application>

    </manifest>
    Tacksam för svar.
     
  4. e7andy

    e7andy Professional Droid Hedersmedlem

    Blev medlem:
    14 okt 2009
    Inlägg:
    2 349
    Mottagna gillanden:
    835
    Telefon:
    Huawei P10 Plus

    MINA ENHETER

    Telefon:
    Huawei P10 Plus
    Telefon 2:
    Nexus 5
    Telefon 3:
    ADP1
    Övrigt:
    LG G Watch R, ChromeCast
    Vad får du för fel?

    Först måste du göra om din WebView till en klassvariabel så att metoden onBackPressed har tillgång till den och sen lägger du in din override av onBackPressed i MainActivity.
     
  5. Hassaninho

    Hassaninho Baby Droid Medlem

    Blev medlem:
    18 feb 2012
    Inlägg:
    18
    Mottagna gillanden:
    0

    MINA ENHETER

    Tack för ditt svar.
    Som sagt jag är helt ny när det gäller detta.
    Hur gör jag om min WebView till en klassvariabel , och hur exakt lägger jag in den?
     
  6. e7andy

    e7andy Professional Droid Hedersmedlem

    Blev medlem:
    14 okt 2009
    Inlägg:
    2 349
    Mottagna gillanden:
    835
    Telefon:
    Huawei P10 Plus

    MINA ENHETER

    Telefon:
    Huawei P10 Plus
    Telefon 2:
    Nexus 5
    Telefon 3:
    ADP1
    Övrigt:
    LG G Watch R, ChromeCast
    Lägg deklarationen av variablen direkt under klassdeklarationen och ta bort deklarationen i metoden och lägg till din nya metod:
    Kod:
    public class MainActivity extends Activity {
        private WebView webView;
    
        @SuppressLint("SetJavaScriptEnabled") @Override 
         
        protected void onCreate(Bundle savedInstanceState) { 
            super.onCreate(savedInstanceState); 
            setContentView(R.layout.activity_main); 
    
            //Appens WebView Adress 
            String url = "http://www.google.se"; 
            webView = (WebView) this.findViewById(R.id.webView1); 
           
             
            view.getSettings().setJavaScriptEnabled(true); 
            view.loadUrl(url);   
        } 
    
        @Override
        public void onBackPressed() {
            if(webView.canGoBack()) {
                webView.goBack();
            }
        }
    
        ...
    
     
  7. Hassaninho

    Hassaninho Baby Droid Medlem

    Blev medlem:
    18 feb 2012
    Inlägg:
    18
    Mottagna gillanden:
    0

    MINA ENHETER

    Appen crasha när jag testar gå tillbaka:

    PHP:
    package mobile.minsida;

    import android.os.Bundle;
    import android.annotation.SuppressLint;
    import android.app.Activity;
    import android.webkit.WebView;

    public class 
    MainActivity extends Activity {
        private 
    WebView webView;

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

            
    //Appens WebView Adress
            
    String url "http://www.google.se";
            
    WebView view = (WebViewthis.findViewById(R.id.webView1);
          
            
            
    view.getSettings().setJavaScriptEnabled(true);
            
    view.loadUrl(url);  
        }
        
        @
    Override
        
    public void onBackPressed() {
            if(
    webView.canGoBack()) {
                
    webView.goBack();
            }
        }    
    }
     
  8. e7andy

    e7andy Professional Droid Hedersmedlem

    Blev medlem:
    14 okt 2009
    Inlägg:
    2 349
    Mottagna gillanden:
    835
    Telefon:
    Huawei P10 Plus

    MINA ENHETER

    Telefon:
    Huawei P10 Plus
    Telefon 2:
    Nexus 5
    Telefon 3:
    ADP1
    Övrigt:
    LG G Watch R, ChromeCast
    Kolla i LogCat i Eclipse och se vad kraschen beror på.
     
  9. Hassaninho

    Hassaninho Baby Droid Medlem

    Blev medlem:
    18 feb 2012
    Inlägg:
    18
    Mottagna gillanden:
    0

    MINA ENHETER

    PHP:
    08-06 09:53:59.340D/AndroidRuntime(904): Shutting down VM
    08-06 09:53:59.340W/dalvikvm(904): threadid=1thread exiting with uncaught exception (group=0x40a71930)
    08-
    06 09:53:59.360E/AndroidRuntime(904): FATAL EXCEPTIONmain
    08-06 09:53:59.360E/AndroidRuntime(904): java.lang.NullPointerException
    08-06 09:53:59.360E/AndroidRuntime(904):     at mobile.mysite.MainActivity.onBackPressed(MainActivity.java:28)
    08-
    06 09:53:59.360E/AndroidRuntime(904):     at android.app.Activity.onKeyUp(Activity.java:2145)
    08-
    06 09:53:59.360E/AndroidRuntime(904):     at android.view.KeyEvent.dispatch(KeyEvent.java:2633)
    08-
    06 09:53:59.360E/AndroidRuntime(904):     at android.app.Activity.dispatchKeyEvent(Activity.java:2375)
    08-
    06 09:53:59.360E/AndroidRuntime(904):     at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchKeyEvent(PhoneWindow.java:1847)
    08-
    06 09:53:59.360E/AndroidRuntime(904):     at android.view.ViewRootImpl.deliverKeyEventPostIme(ViewRootImpl.java:3701)
    08-
    06 09:53:59.360E/AndroidRuntime(904):     at android.view.ViewRootImpl.handleImeFinishedEvent(ViewRootImpl.java:3651)
    08-
    06 09:53:59.360E/AndroidRuntime(904):     at android.view.ViewRootImpl$ViewRootHandler.handleMessage(ViewRootImpl.java:2818)
    08-
    06 09:53:59.360E/AndroidRuntime(904):     at android.os.Handler.dispatchMessage(Handler.java:99)
    08-
    06 09:53:59.360E/AndroidRuntime(904):     at android.os.Looper.loop(Looper.java:137)
    08-
    06 09:53:59.360E/AndroidRuntime(904):     at android.app.ActivityThread.main(ActivityThread.java:5041)
    08-
    06 09:53:59.360E/AndroidRuntime(904):     at java.lang.reflect.Method.invokeNative(Native Method)
    08-
    06 09:53:59.360E/AndroidRuntime(904):     at java.lang.reflect.Method.invoke(Method.java:511)
    08-
    06 09:53:59.360E/AndroidRuntime(904):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
    08-
    06 09:53:59.360E/AndroidRuntime(904):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
    08-
    06 09:53:59.360E/AndroidRuntime(904):     at dalvik.system.NativeStart.main(Native Method)
     
  10. Zooklubba

    Zooklubba Android Medlem

    Blev medlem:
    10 jul 2010
    Inlägg:
    6 448
    Mottagna gillanden:
    2 199

    MINA ENHETER

    Din variabel webView som du deklarerar globalt i din klass initeras aldrig, den blir null.

    Kod:
    package mobile.minsida; 
    
    import android.os.Bundle; 
    import android.annotation.SuppressLint; 
    import android.app.Activity; 
    import android.webkit.WebView; 
    
    public class MainActivity extends Activity { 
        [B]private WebView webView; [/B]
    
        @SuppressLint("SetJavaScriptEnabled") @Override 
         
        protected void onCreate(Bundle savedInstanceState) { 
            super.onCreate(savedInstanceState); 
            setContentView(R.layout.activity_main); 
    
           [B] //Appens WebView Adress [/B]
            String url = "http://www.google.se"; 
            [B]webView[/B] = (WebView) this.findViewById(R.id.webView1); 
           
             
            webView.getSettings().setJavaScriptEnabled(true); 
            webView.loadUrl(url);   
        } 
         
        @Override 
        public void onBackPressed() { 
            if(webView.canGoBack()) { 
                webView.goBack(); 
            } 
        }     
    }  
    Borde fungera, körde lite bold för att visa vad som ändrades/inte fungerade.
     
    Hassaninho gillar detta.
  11. Hassaninho

    Hassaninho Baby Droid Medlem

    Blev medlem:
    18 feb 2012
    Inlägg:
    18
    Mottagna gillanden:
    0

    MINA ENHETER

    Tack för ditt svar, det funkade.
    När vi ändå snackar här, har du nån bra enkel guide på hur man gör en simple mobil app, dvs webb mobil app.

    Med det menar jag en meny, klickar man på en knapp så kommer det html5 kod på nästa sida.

    Tex: "Om Oss" knapp.
    Och i nästa sida information om oss.

    Väldigt enkelt, tacksam för svar.