试图加载旋转器位置 /值会导致integer.parseint()上的崩溃



在这里Android编程的初学者。我正在编写一个应用程序,该应用程序具有用于性别/身高/体重的设置页面,并将此信息计算并传递给另一个活动(主要活动)。

用户返回设置页面时,它将加载用户之前输入的所有值。目前,我的EditText字段加载没有问题,但是性别正在使用旋转器(男性/女性),而设置活动只是在我输入代码时崩溃。

它似乎在integer.parseint()。

上崩溃

预先感谢!

摘要来自按钮侦听器

btnSave = (Button) this.findViewById(R.id.btn_save);
btnSave.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
.
.
.
savePreferences("storedAge", inputAge.getText().toString());
savePreferences("storedHeight", inputHeight.getText().toString());
savePreferences("storedWeight", inputWeight.getText().toString());
savePreferences("storedBMR", String.valueOf(myBMR));

int userChoice = chooseGender.getSelectedItemPosition();
savePreferences("storedGender",Integer.toString(userChoice));

SavePreferences

private void savePreferences(String key, String value) {
        SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
Editor editor = sharedPreferences.edit();
editor.putString(key, value);
editor.commit();
}

loadPreferences

private void loadSavedPreferences(){
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);

String age = sharedPreferences.getString("storedAge", "");
inputAge.setText(age);
String weight = sharedPreferences.getString("storedWeight", "");
inputWeight.setText(weight);
String height = sharedPreferences.getString("storedHeight", "");
inputHeight.setText(height);
String gender = sharedPreferences.getString("storedGender", "");
Integer genderValue = Integer.parseInt(gender);
chooseGender.setSelection(genderValue);
}

尝试了阿米特的建议,但仍然崩溃。如下记录猫:

01-31 13:43:29.576: E/SurfaceFlinger(37): ro.sf.lcd_density must be defined as a build property
01-31 13:43:30.158: E/SurfaceFlinger(37): ro.sf.lcd_density must be defined as a build property
01-31 13:43:54.516: E/ActivityThread(609): Service com.android.exchange.ExchangeService has leaked ServiceConnection com.android.emailcommon.service.ServiceProxy$ProxyConnection@40cf08b0 that was originally bound here
01-31 13:43:54.516: E/ActivityThread(609): android.app.ServiceConnectionLeaked: Service com.android.exchange.ExchangeService has leaked ServiceConnection com.android.emailcommon.service.ServiceProxy$ProxyConnection@40cf08b0 that was originally bound here
01-31 13:43:54.516: E/ActivityThread(609):  at android.app.LoadedApk$ServiceDispatcher.<init>(LoadedApk.java:969)
01-31 13:43:54.516: E/ActivityThread(609):  at android.app.LoadedApk.getServiceDispatcher(LoadedApk.java:863)
01-31 13:43:54.516: E/ActivityThread(609):  at android.app.ContextImpl.bindService(ContextImpl.java:1418)
01-31 13:43:54.516: E/ActivityThread(609):  at android.app.ContextImpl.bindService(ContextImpl.java:1407)
01-31 13:43:54.516: E/ActivityThread(609):  at android.content.ContextWrapper.bindService(ContextWrapper.java:473)
01-31 13:43:54.516: E/ActivityThread(609):  at com.android.emailcommon.service.ServiceProxy.setTask(ServiceProxy.java:157)
01-31 13:43:54.516: E/ActivityThread(609):  at com.android.emailcommon.service.ServiceProxy.setTask(ServiceProxy.java:145)
01-31 13:43:54.516: E/ActivityThread(609):  at com.android.emailcommon.service.AccountServiceProxy.getDeviceId(AccountServiceProxy.java:116)
01-31 13:43:54.516: E/ActivityThread(609):  at com.android.exchange.ExchangeService.getDeviceId(ExchangeService.java:1249)
01-31 13:43:54.516: E/ActivityThread(609):  at com.android.exchange.ExchangeService$7.run(ExchangeService.java:1856)
01-31 13:43:54.516: E/ActivityThread(609):  at com.android.emailcommon.utility.Utility$2.doInBackground(Utility.java:551)
01-31 13:43:54.516: E/ActivityThread(609):  at com.android.emailcommon.utility.Utility$2.doInBackground(Utility.java:549)
01-31 13:43:54.516: E/ActivityThread(609):  at android.os.AsyncTask$2.call(AsyncTask.java:287)
01-31 13:43:54.516: E/ActivityThread(609):  at java.util.concurrent.FutureTask.run(FutureTask.java:234)
01-31 13:43:54.516: E/ActivityThread(609):  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
01-31 13:43:54.516: E/ActivityThread(609):  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
01-31 13:43:54.516: E/ActivityThread(609):  at java.lang.Thread.run(Thread.java:856)
01-31 13:43:54.526: E/StrictMode(609): null
01-31 13:43:54.526: E/StrictMode(609): android.app.ServiceConnectionLeaked: Service com.android.exchange.ExchangeService has leaked ServiceConnection com.android.emailcommon.service.ServiceProxy$ProxyConnection@40cf08b0 that was originally bound here
01-31 13:43:54.526: E/StrictMode(609):  at android.app.LoadedApk$ServiceDispatcher.<init>(LoadedApk.java:969)
01-31 13:43:54.526: E/StrictMode(609):  at android.app.LoadedApk.getServiceDispatcher(LoadedApk.java:863)
01-31 13:43:54.526: E/StrictMode(609):  at android.app.ContextImpl.bindService(ContextImpl.java:1418)
01-31 13:43:54.526: E/StrictMode(609):  at android.app.ContextImpl.bindService(ContextImpl.java:1407)
01-31 13:43:54.526: E/StrictMode(609):  at android.content.ContextWrapper.bindService(ContextWrapper.java:473)
01-31 13:43:54.526: E/StrictMode(609):  at com.android.emailcommon.service.ServiceProxy.setTask(ServiceProxy.java:157)
01-31 13:43:54.526: E/StrictMode(609):  at com.android.emailcommon.service.ServiceProxy.setTask(ServiceProxy.java:145)
01-31 13:43:54.526: E/StrictMode(609):  at com.android.emailcommon.service.AccountServiceProxy.getDeviceId(AccountServiceProxy.java:116)
01-31 13:43:54.526: E/StrictMode(609):  at com.android.exchange.ExchangeService.getDeviceId(ExchangeService.java:1249)
01-31 13:43:54.526: E/StrictMode(609):  at com.android.exchange.ExchangeService$7.run(ExchangeService.java:1856)
01-31 13:43:54.526: E/StrictMode(609):  at com.android.emailcommon.utility.Utility$2.doInBackground(Utility.java:551)
01-31 13:43:54.526: E/StrictMode(609):  at com.android.emailcommon.utility.Utility$2.doInBackground(Utility.java:549)
01-31 13:43:54.526: E/StrictMode(609):  at android.os.AsyncTask$2.call(AsyncTask.java:287)
01-31 13:43:54.526: E/StrictMode(609):  at java.util.concurrent.FutureTask.run(FutureTask.java:234)
01-31 13:43:54.526: E/StrictMode(609):  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
01-31 13:43:54.526: E/StrictMode(609):  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
01-31 13:43:54.526: E/StrictMode(609):  at java.lang.Thread.run(Thread.java:856)
01-31 13:43:54.546: E/ActivityThread(609): Service com.android.exchange.ExchangeService has leaked ServiceConnection com.android.emailcommon.service.ServiceProxy$ProxyConnection@40ce27f0 that was originally bound here
01-31 13:43:54.546: E/ActivityThread(609): android.app.ServiceConnectionLeaked: Service com.android.exchange.ExchangeService has leaked ServiceConnection com.android.emailcommon.service.ServiceProxy$ProxyConnection@40ce27f0 that was originally bound here
01-31 13:43:54.546: E/ActivityThread(609):  at android.app.LoadedApk$ServiceDispatcher.<init>(LoadedApk.java:969)
01-31 13:43:54.546: E/ActivityThread(609):  at android.app.LoadedApk.getServiceDispatcher(LoadedApk.java:863)
01-31 13:43:54.546: E/ActivityThread(609):  at android.app.ContextImpl.bindService(ContextImpl.java:1418)
01-31 13:43:54.546: E/ActivityThread(609):  at android.app.ContextImpl.bindService(ContextImpl.java:1407)
01-31 13:43:54.546: E/ActivityThread(609):  at android.content.ContextWrapper.bindService(ContextWrapper.java:473)
01-31 13:43:54.546: E/ActivityThread(609):  at com.android.emailcommon.service.ServiceProxy.setTask(ServiceProxy.java:157)
01-31 13:43:54.546: E/ActivityThread(609):  at com.android.emailcommon.service.ServiceProxy.setTask(ServiceProxy.java:145)
01-31 13:43:54.546: E/ActivityThread(609):  at com.android.emailcommon.service.ServiceProxy.test(ServiceProxy.java:191)
01-31 13:43:54.546: E/ActivityThread(609):  at com.android.exchange.ExchangeService$7.run(ExchangeService.java:1850)
01-31 13:43:54.546: E/ActivityThread(609):  at com.android.emailcommon.utility.Utility$2.doInBackground(Utility.java:551)
01-31 13:43:54.546: E/ActivityThread(609):  at com.android.emailcommon.utility.Utility$2.doInBackground(Utility.java:549)
01-31 13:43:54.546: E/ActivityThread(609):  at android.os.AsyncTask$2.call(AsyncTask.java:287)
01-31 13:43:54.546: E/ActivityThread(609):  at java.util.concurrent.FutureTask.run(FutureTask.java:234)
01-31 13:43:54.546: E/ActivityThread(609):  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
01-31 13:43:54.546: E/ActivityThread(609):  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
01-31 13:43:54.546: E/ActivityThread(609):  at java.lang.Thread.run(Thread.java:856)
01-31 13:43:54.567: E/StrictMode(609): null
01-31 13:43:54.567: E/StrictMode(609): android.app.ServiceConnectionLeaked: Service com.android.exchange.ExchangeService has leaked ServiceConnection com.android.emailcommon.service.ServiceProxy$ProxyConnection@40ce27f0 that was originally bound here
01-31 13:43:54.567: E/StrictMode(609):  at android.app.LoadedApk$ServiceDispatcher.<init>(LoadedApk.java:969)
01-31 13:43:54.567: E/StrictMode(609):  at android.app.LoadedApk.getServiceDispatcher(LoadedApk.java:863)
01-31 13:43:54.567: E/StrictMode(609):  at android.app.ContextImpl.bindService(ContextImpl.java:1418)
01-31 13:43:54.567: E/StrictMode(609):  at android.app.ContextImpl.bindService(ContextImpl.java:1407)
01-31 13:43:54.567: E/StrictMode(609):  at android.content.ContextWrapper.bindService(ContextWrapper.java:473)
01-31 13:43:54.567: E/StrictMode(609):  at com.android.emailcommon.service.ServiceProxy.setTask(ServiceProxy.java:157)
01-31 13:43:54.567: E/StrictMode(609):  at com.android.emailcommon.service.ServiceProxy.setTask(ServiceProxy.java:145)
01-31 13:43:54.567: E/StrictMode(609):  at com.android.emailcommon.service.ServiceProxy.test(ServiceProxy.java:191)
01-31 13:43:54.567: E/StrictMode(609):  at com.android.exchange.ExchangeService$7.run(ExchangeService.java:1850)
01-31 13:43:54.567: E/StrictMode(609):  at com.android.emailcommon.utility.Utility$2.doInBackground(Utility.java:551)
01-31 13:43:54.567: E/StrictMode(609):  at com.android.emailcommon.utility.Utility$2.doInBackground(Utility.java:549)
01-31 13:43:54.567: E/StrictMode(609):  at android.os.AsyncTask$2.call(AsyncTask.java:287)
01-31 13:43:54.567: E/StrictMode(609):  at java.util.concurrent.FutureTask.run(FutureTask.java:234)
01-31 13:43:54.567: E/StrictMode(609):  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
01-31 13:43:54.567: E/StrictMode(609):  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
01-31 13:43:54.567: E/StrictMode(609):  at java.lang.Thread.run(Thread.java:856)

在解析"性别"字符串之前,请检查其是否为空或空白,然后与此 - 重新校友 -

if (gender != null && gender.length() > 0) 
        {
            Integer genderValue = Integer.parseInt(gender);
            chooseGender.setSelection(genderValue, true);
        }

最新更新