2016-03-26 15 views
0

Ich versuche, eine Zurück-Schaltfläche in meiner Webview-App zu erstellen. Es soll Webhistory navigieren. Die App stürzt jedoch ab, wenn ich den Zurück-Button benutze.Nach oben Button Webview stürzt ab

public class MainActivity extends Activity { 
private WebView mWebView; 

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

    mWebView.setWebViewClient(new WvClient()); 
    WebSettings webSettings = mWebView.getSettings(); 
    webSettings.setJavaScriptEnabled(true); 
    mWebView = (WebView) findViewById(R.id.activity_main_webview); 
    mWebView.loadUrl("http://uhsswordandshield.com/"); 
    mWebView.getSettings().setSupportMultipleWindows(true); 


} 


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

    } else { 

     // Otherwise defer to system default behavior. 
     super.onBackPressed(); 
    } 
} 


@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(amapps.com.uhss.R.menu.menu_main, menu); 
    return true; 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    // Handle action bar item clicks here. The action bar will 
    // automatically handle clicks on the Home/Up button, so long 
    // as you specify a parent activity in AndroidManifest.xml. 
    int id = item.getItemId(); 


    //noinspection SimplifiableIfStatement 
    if (id == amapps.com.uhss.R.id.action_settings) { 
     return true; 
    } 

    return super.onOptionsItemSelected(item); 
} 
private class WvClient extends WebViewClient{ 

} 
} 

Das ist meine XML-Datei

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:paddingTop="16dp" 
android:paddingBottom="16dp" 



tools:context=".MainActivity" 
> 
<WebView 
android:id="@+id/activity_main_webview" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
    /> 
    </RelativeLayout> 

Dies ist der Fehler ich immer bin, wenn ich die app

EXCEPTION: main 
Process: amapps.com.uhss, PID: 20498 
java.lang.RuntimeException: Unable to start activity ComponentInfo{amapps.com.uhss/amapps.com.uhss.MainActivity}: java.lang.NullPointerException 
     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2436) 
     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2495) 
     at android.app.ActivityThread.access$900(ActivityThread.java:170) 
     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1304) 
     at android.os.Handler.dispatchMessage(Handler.java:102) 
     at android.os.Looper.loop(Looper.java:146) 
     at android.app.ActivityThread.main(ActivityThread.java:5635) 
     at java.lang.reflect.Method.invokeNative(Native Method) 
     at java.lang.reflect.Method.invoke(Method.java:515) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1291) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1107) 
     at dalvik.system.NativeStart.main(Native Method) 
Caused by: java.lang.NullPointerException 
     at amapps.com.uhss.MainActivity.onCreate(MainActivity.java:23) 
     at andr 

starten Wenn jemand eine Abhilfe bitte posten könnte dies das wäre toll . Meine App funktioniert perfekt ohne die

private WebView mWebview 

aber ich kann nicht ohne sie

onBackPressed() 

Methode verwenden. Ich habe

den Code aus Android Studio Webseite wurde mit
public class MainActivity extends Activity { 

private WebView mWebView; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
... 
} 

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

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    ... 
} 

} 

Antwort

0

Sie müssen mWebView vor zuweisen starten Sie Methoden und forderte sie auf:

mWebView = (WebView) findViewById(R.id.activity_main_webview); 
mWebView.setWebViewClient(new WvClient()); 
WebSettings webSettings = mWebView.getSettings(); 
webSettings.setJavaScriptEnabled(true); 
mWebView.loadUrl("http://uhsswordandshield.com/"); 
mWebView.getSettings().setSupportMultipleWindows(true); 

Derzeit auf es Sie, bevor Sie eine Methode aufrufen weisen Sie es zu, was bedeutet, dass es zu der Zeit null ist.

+0

Ok, aber wie verwende ich die mWebView in meiner onBackPressed-Methode, wenn ich es in meiner oncreate-Methode deklariere. – Mike

+0

Wenn Sie meinen Code bearbeiten oder eine funktionierende Version meines Codes mit der Zurück-Schaltfläche hochladen könnten, wäre das großartig, da ich keine Code-Beispiele finden kann, die für mich funktionieren. Vielen Dank! – Mike

+0

Was stimmt nicht mit dem Code, den ich gerade gezeigt habe? Verstehst du, was ich getan habe? –