应用程序运行正常第一次崩溃,但第二次

编程入门 行业动态 更新时间:2024-10-11 23:25:17
本文介绍了应用程序运行正常第一次崩溃,但第二次的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我的头衔是pretty的自我解释。这是我的code:

公共类MainActivity延伸活动{     私人的WebView浏览;     私人的TextView吨;     私人字符串地址=htt​​p://www.google;     私人诠释刷新,clearcache,时间,refreshTime,cacheTime;     @覆盖     公共无效的onCreate(包savedInstanceState){         super.onCreate(savedInstanceState);         的setContentView(R.layout.activity_main);         共享preferences摹preFS = preferenceManager                 .getDefaultShared preferences(getBaseContext());         地址= G prefs.getString(地址,www.google);         刷新= G prefs.getInt(刷新,1);         clearcache = G prefs.getInt(ClearCache,1);         时间= G prefs.getInt(时代,0);         开关(时间){         情况下0:             refreshTime =刷新* 60 * 60 * 1000;             打破;         情况1:             refreshTime =刷新* 60 * 1000;             打破;         案例2:             refreshTime =刷新* 1000;             打破;         }         开关(时间){         情况下0:             cacheTime = clearcache * 60 * 60 * 1000;             打破;         情况1:             cacheTime = clearcache * 60 * 1000;             打破;         案例2:             cacheTime = clearcache * 1000;             打破;         }         浏览=(web视图)findViewById(R.id.webView1);         T =(TextView中)findViewById(R.id.t);         browse.getSettings()setJavaScriptEnabled(真)。         browse.getSettings()setPluginsEnabled(真)。         。browse.getSettings()setLoadWithOverviewMode(真正的);         。browse.getSettings()setUseWideViewPort(真正的);         。browse.getSettings()setBuiltInZoomControls(真正的);         。browse.getSettings()setSupportZoom(真正的);         browse.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);         browse.setScrollbarFadingEnabled(真正的);         。browse.getSettings()setLoadsImagesAutomatically(真正的);         。browse.getSettings()setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);         browse.getSettings()setAppCacheMaxSize(1024 * 1024 * 8)。         browse.setWebViewClient(新WebViewClient(){             @覆盖             公共无效onPageStarted(web视图查看,字符串URL,位图图标){                 // TODO自动生成方法存根                 super.onPageStarted(查看,网址,网站图标);                 t.se​​tVisibility(TextView.VISIBLE);             }             @覆盖             公共无效onPageFinished(web视图查看,字符串URL){                 //做你的东西在这里                 super.onPageFinished(查看,网址);                 t.se​​tVisibility(TextView.GONE);             }         });         尝试 {             browse.loadUrl(地址);         }赶上(例外五){             e.printStackTrace();         }         refreshRRryan();         cacheRRryan();     }     最终的处理程序refreshhandler =新的处理程序();     最后计时器refreshtimer =新的Timer();     最终的可运行refreshdoA =新的Runnable(){         @覆盖         公共无效的run(){             browse.reload();         }     };     公共无效refreshRRryan(){         TimerTask的refreshtask =新的TimerTask(){             @覆盖             公共无效的run(){                 refreshhandler.post(refreshdoA);             }         };         refreshtimer.scheduleAtFixedRate(refreshtask,refreshTime,refreshTime);     }     最终的处理程序cachehandler =新的处理程序();     最后计时器cachetimer =新的Timer();     最终的可运行cachedoA =新的Runnable(){         @覆盖         公共无效的run(){             browse.clearCache(真正的);             。getApplicationContext()deleteDatabase(webview.db);             getApplicationContext()deleteDatabase(webviewCache.db);         }     };     公共无效cacheRRryan(){         TimerTask的cachetask =新的TimerTask(){             @覆盖             公共无效的run(){                 cachehandler.post(cachedoA);             }         };         cachetimer.scheduleAtFixedRate(cachetask,cacheTime,cacheTime);     }     @覆盖     公共文件getCacheDir(){         //注:此方法采用的是Android 2.1         返回getApplicationContext()getCacheDir()。     }     @覆盖     公共布尔onCreateOptionsMenu(功能菜单){         // TODO自动生成方法存根         super.onCreateOptionsMenu(菜单);         MenuInflater爆破= getMenuInflater();         blowUp.inflate(R.menu.activity_main,菜单);         返回true;     }     @覆盖     公共布尔onOptionsItemSelected(菜单项项){         开关(item.getItemId()){         案例R.id.aboutUs:             意图I =新的意向书(关于);             startActivity(ⅰ);             打破;         案例R.id. preferences:             意图P =新的意向书(preFS);             startActivityForResult(对,101);             打破;         }         返回false;     } }

而这里的logcat的:

一十一月8号至17号:08:05.997:E / AndroidRuntime(1197):致命异常:主要 十一月8号至17日:08:05.997:E / AndroidRuntime(1197):java.lang.RuntimeException的:无法启动的活动ComponentInfo {com.fit.world.browser / com.fit.world.browser.MainActivity}:java.lang中.ClassCastException:java.lang.String中 十一月8号至17日:08:05.997:E / AndroidRuntime(1197):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647) 十一月8号至17日:08:05.997:E / AndroidRuntime(1197):在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663) 十一月8号至17日:08:05.997:E / AndroidRuntime(1197):在android.app.ActivityThread.access $ 1500(ActivityThread.java:117) 十一月8号至17日:08:05.997:E / AndroidRuntime(1197):在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:931) 十一月8号至17日:08:05.997:E / AndroidRuntime(1197):在android.os.Handler.dispatchMessage(Handler.java:99) 十一月8号至17日:08:05.997:E / AndroidRuntime(1197):在android.os.Looper.loop(Looper.java:123) 十一月8号至17日:08:05.997:E / AndroidRuntime(1197):在android.app.ActivityThread.main(ActivityThread.java:3683) 十一月8号至17日:08:05.997:E / AndroidRuntime(1197):在java.lang.reflect.Method.invokeNative(本机方法) 十一月8号至17日:08:05.997:E / AndroidRuntime(1197):在java.lang.reflect.Method.invoke(Method.java:507) 十一月8号至17日:08:05.997:E / AndroidRuntime(1197):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:839) 十一月8号至17日:08:05.997:E / AndroidRuntime(1197):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 十一月8号至17日:08:05.997:E / AndroidRuntime(1197):在dalvik.system.NativeStart.main(本机方法) 十一月8号至17日:08:05.997:E / AndroidRuntime(1197):java.lang.ClassCastException:产生的原因java.lang.String中 十一月8号至17日:08:05.997:E / AndroidRuntime(1197):在android.app.ContextImpl $共享preferencesImpl.getInt(ContextImpl.java:2817) 十一月8号至17日:08:05.997:E / AndroidRuntime(1197):在com.fit.world.browser.MainActivity.onCreate(MainActivity.java:37) 十一月8号至17日:08:05.997:E / AndroidRuntime(1197):在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 十一月8号至17日:08:05.997:E / AndroidRuntime(1197):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611) 十一月8号至17日:08:05.997:E / AndroidRuntime(1197):11 ...更多

和我pretty的肯定,我的表现很好,因为该活动运行的第一次。

请帮助我。

解决方案

刷新= G prefs.getInt(刷新,1); clearcache = G prefs.getInt(ClearCache,1); 时间= G prefs.getInt(时代,0);

第一次应用程序运行,它使用默认值,你使用(1,1,0)以上。

但第二次,它肯定使用了从用户输入所保存的数据可能。

您必须将其保存为一个字符串,并试图将其恢复为int ...

My title is pretty self explanatory. Here's my code:

public class MainActivity extends Activity { private WebView browse; private TextView t; private String address="www.google"; private int refresh, clearcache, time, refreshTime, cacheTime; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); SharedPreferences gPrefs = PreferenceManager .getDefaultSharedPreferences(getBaseContext()); address = gPrefs.getString("Address", "www.google"); refresh = gPrefs.getInt("Refresh", 1); clearcache = gPrefs.getInt("ClearCache", 1); time = gPrefs.getInt("Time", 0); switch (time) { case 0: refreshTime = refresh * 60 * 60 * 1000; break; case 1: refreshTime = refresh * 60 * 1000; break; case 2: refreshTime = refresh * 1000; break; } switch (time) { case 0: cacheTime = clearcache * 60 * 60 * 1000; break; case 1: cacheTime = clearcache * 60 * 1000; break; case 2: cacheTime = clearcache * 1000; break; } browse = (WebView) findViewById(R.id.webView1); t = (TextView) findViewById(R.id.t); browse.getSettings().setJavaScriptEnabled(true); browse.getSettings().setPluginsEnabled(true); browse.getSettings().setLoadWithOverviewMode(true); browse.getSettings().setUseWideViewPort(true); browse.getSettings().setBuiltInZoomControls(true); browse.getSettings().setSupportZoom(true); browse.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY); browse.setScrollbarFadingEnabled(true); browse.getSettings().setLoadsImagesAutomatically(true); browse.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK); browse.getSettings().setAppCacheMaxSize(1024 * 1024 * 8); browse.setWebViewClient(new WebViewClient() { @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { // TODO Auto-generated method stub super.onPageStarted(view, url, favicon); t.setVisibility(TextView.VISIBLE); } @Override public void onPageFinished(WebView view, String url) { // do your stuff here super.onPageFinished(view, url); t.setVisibility(TextView.GONE); } }); try { browse.loadUrl(address); } catch (Exception e) { e.printStackTrace(); } refreshRRryan(); cacheRRryan(); } final Handler refreshhandler = new Handler(); final Timer refreshtimer = new Timer(); final Runnable refreshdoA = new Runnable() { @Override public void run() { browse.reload(); } }; public void refreshRRryan() { TimerTask refreshtask = new TimerTask() { @Override public void run() { refreshhandler.post(refreshdoA); } }; refreshtimer.scheduleAtFixedRate(refreshtask, refreshTime, refreshTime); } final Handler cachehandler = new Handler(); final Timer cachetimer = new Timer(); final Runnable cachedoA = new Runnable() { @Override public void run() { browse.clearCache(true); getApplicationContext().deleteDatabase("webview.db"); getApplicationContext().deleteDatabase("webviewCache.db"); } }; public void cacheRRryan() { TimerTask cachetask = new TimerTask() { @Override public void run() { cachehandler.post(cachedoA); } }; cachetimer.scheduleAtFixedRate(cachetask, cacheTime, cacheTime); } @Override public File getCacheDir() { // NOTE: this method is used in Android 2.1 return getApplicationContext().getCacheDir(); } @Override public boolean onCreateOptionsMenu(Menu menu) { // TODO Auto-generated method stub super.onCreateOptionsMenu(menu); MenuInflater blowUp = getMenuInflater(); blowUp.inflate(R.menu.activity_main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.aboutUs: Intent i = new Intent("ABOUT"); startActivity(i); break; case R.id.preferences: Intent p = new Intent("PREFS"); startActivityForResult(p, 101); break; } return false; } }

And here's logcat:

08-17 11:08:05.997: E/AndroidRuntime(1197): FATAL EXCEPTION: main 08-17 11:08:05.997: E/AndroidRuntime(1197): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.fit.world.browser/com.fit.world.browser.MainActivity}: java.lang.ClassCastException: java.lang.String 08-17 11:08:05.997: E/AndroidRuntime(1197): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647) 08-17 11:08:05.997: E/AndroidRuntime(1197): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663) 08-17 11:08:05.997: E/AndroidRuntime(1197): at android.app.ActivityThread.access$1500(ActivityThread.java:117) 08-17 11:08:05.997: E/AndroidRuntime(1197): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931) 08-17 11:08:05.997: E/AndroidRuntime(1197): at android.os.Handler.dispatchMessage(Handler.java:99) 08-17 11:08:05.997: E/AndroidRuntime(1197): at android.os.Looper.loop(Looper.java:123) 08-17 11:08:05.997: E/AndroidRuntime(1197): at android.app.ActivityThread.main(ActivityThread.java:3683) 08-17 11:08:05.997: E/AndroidRuntime(1197): at java.lang.reflect.Method.invokeNative(Native Method) 08-17 11:08:05.997: E/AndroidRuntime(1197): at java.lang.reflect.Method.invoke(Method.java:507) 08-17 11:08:05.997: E/AndroidRuntime(1197): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 08-17 11:08:05.997: E/AndroidRuntime(1197): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 08-17 11:08:05.997: E/AndroidRuntime(1197): at dalvik.system.NativeStart.main(Native Method) 08-17 11:08:05.997: E/AndroidRuntime(1197): Caused by: java.lang.ClassCastException: java.lang.String 08-17 11:08:05.997: E/AndroidRuntime(1197): at android.app.ContextImpl$SharedPreferencesImpl.getInt(ContextImpl.java:2817) 08-17 11:08:05.997: E/AndroidRuntime(1197): at com.fit.world.browser.MainActivity.onCreate(MainActivity.java:37) 08-17 11:08:05.997: E/AndroidRuntime(1197): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 08-17 11:08:05.997: E/AndroidRuntime(1197): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611) 08-17 11:08:05.997: E/AndroidRuntime(1197): ... 11 more

And I'm pretty sure my manifest is fine because the activity runs the first time.

Help me please.

解决方案

refresh = gPrefs.getInt("Refresh", 1); clearcache = gPrefs.getInt("ClearCache", 1); time = gPrefs.getInt("Time", 0);

The first time the app run, it uses the default value you use (1,1,0) above.

But the second time, it certainly uses the data you've saved from a user input perhaps.

You must be saving it as a string and trying to retrieve it as an int...

更多推荐

应用程序运行正常第一次崩溃,但第二次

本文发布于:2023-11-23 04:27:14,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1620087.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:应用程序

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!