Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>You have a private Timer called timer in the activity, however that seems not to have been initialized since you have another timer called timer within your activity. Your private Timer timer defined under the webview is null therefore you get the nullpointexception when onPause is called. </p> <p>Remove the class from within the onCreate(), you might need to define Timer as a singlethreadscheduledexecutor. </p> <pre><code>timer = Executors.newSingleThreadScheduledExecutor(); timer.scheduleAtFixedRate(new Runnable() { </code></pre> <p>Your code with suggested answer:</p> <pre><code>import java.util.Timer; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; import android.app.Activity; import android.app.ProgressDialog; import android.content.Intent; import android.content.SharedPreferences; import android.os.Bundle; import android.preference.PreferenceManager; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; import android.view.View.OnClickListener; import android.webkit.WebView; public class Quotes extends Activity implements OnClickListener { ProgressDialog dialog; private WebView webview; private Timer timer; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); WebView adsview = (WebView) findViewById(R.id.ads); adsview.getSettings().setJavaScriptEnabled(true); adsview.loadUrl("http://www.dgdevelco.com/quotes/androidad.html"); SharedPreferences SP = PreferenceManager.getDefaultSharedPreferences(getBaseContext()); String q = SP.getString("appViewType","http://www.dgdevelco.com/quotes/quotesandroidtxt.html"); String c = SP.getString("appRefreshRate","20"); webview = (WebView) findViewById(R.id.scroll); webview.getSettings().setJavaScriptEnabled(true); webview.setWebViewClient(new QuotesWebView(this)); webview.loadUrl(q); timer = Executors.newSingleThreadScheduledExecutor(); timer.scheduleAtFixedRate(new Runnable() { @Override public void run() { webview.reload(); } }, 10, Long.parseLong(c),TimeUnit.SECONDS); findViewById(R.id.refresh).setOnClickListener(this); } @Override public void onPause(){ timer.cancel(); super.onPause(); } @Override public void onResume(){ webview.reload(); super.onResume(); } public void onClick(View v){ switch(v.getId()){ case R.id.refresh: webview.reload(); break; } } @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.menu, menu); MenuItem about = menu.getItem(0); about.setIntent(new Intent(this, About.class)); MenuItem preferences = menu.getItem(1); preferences.setIntent(new Intent(this, Preferences.class)); return true; } } </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload