Android app gives me an error now:
package com.martijngijselaar.rooster;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.view.Window;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
public class WebviewActivity extends MainActivity {
private WebView myWebView;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.main);
WebView myWebView = (WebView)findViewById(R.id.webview);
WebSettings webSettings = myWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
myWebView.setWebViewClient(new WebViewClient());
myWebView.requestFocus(View.FOCUS_DOWN);
myWebView.setOnTouchListener(new View.OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
case MotionEvent.ACTION_UP:
if (!v.hasFocus()) {
v.requestFocus();
}
break;
}
return false;
}
});
}
public void onResume() {
super.onResume();
if ( isOnline() == true )
myWebView.loadUrl(webLink);
else if ( isOnline() == false )
showNoConnectionDialog();
}
}
And this is the logcat:
11-25 12:33:34.697: E/AndroidRuntime(494): FATAL EXCEPTION: main 11-25 12:33:34.697: E/AndroidRuntime(494): java.lang.RuntimeException: Unable to resume activity {com.martijngijselaar.rooster/com.martijngijselaar.rooster.WebviewActivity}: java.lang.NullPointerException 11-25 12:33:34.697: E/AndroidRuntime(494): at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3128) 11-25 12:33:34.697: E/AndroidRuntime(494): at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3143) 11-25 12:33:34.697: E/AndroidRuntime(494): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2684) 11-25 12:33:34.697: E/AndroidRuntime(494): at android.app.ActivityThread.access$2300(ActivityThread.java:125) 11-25 12:33:34.697: E/AndroidRuntime(494): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033) 11-25 12:33:34.697: E/AndroidRuntime(494): at android.os.Handler.dispatchMessage(Handler.java:99) 11-25 12:33:34.697: E/AndroidRuntime(494): at android.os.Looper.loop(Looper.java:123) 11-25 12:33:34.697: E/AndroidRuntime(494): at android.app.ActivityThread.main(ActivityThread.java:4627) 11-25 12:33:34.697: E/AndroidRuntime(494): at java.lang.reflect.Method.invokeNative(Native Method) 11-25 12:33:34.697: E/AndroidRuntime(494): at java.lang.reflect.Method.invoke(Method.java:521) 11-25 12:33:34.697: E/AndroidRuntime(494): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 11-25 12:33:34.697: E/AndroidRuntime(494): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 11-25 12:33:34.697: E/AndroidRuntime(494): at dalvik.system.NativeStart.main(Native Method) 11-25 12:33:34.697: E/AndroidRuntime(494): Caused by: java.lang.NullPointerException 11-25 12:33:34.697: E/AndroidRuntime(494): at com.martijngijselaar.rooster.WebviewActivity.onResume(WebviewActivity.java:46) 11-25 12:33:34.697: E/AndroidRuntime(494): at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1149) 11-25 12:33:34.697: E/AndroidRuntime(494): at android.app.Activity.performResume(Activity.java:3823) 11-25 12:33:34.697: E/AndroidRuntime(494): at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3118) 11-25 12:33:34.697: E/AndroidRuntime(494): ... 12 more
Blockquote
You are really close. You just need to move the code that loads the url into onResume:
public void onResume(){
super.onResume();
if ( isOnline() == true )
myWebView.loadUrl(webLink);
}
onResume is called right after onCreate so it will be called in both the case where it's the first load and when coming back from the pause.
Update based on discussion in the comments: To move the web view to an instance variable:
public class WebviewActivity extends MainActivity {
private WebView myWebView;
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.main);
myWebView = (WebView)findViewById(R.id.webview);
//the rest of your onCreate method here)
}
}