2014-01-25 30 views
2

初學者在android編程在這裏。我正在編寫一個具有性別/身高/體重設置頁面的應用程序,並且計算這些信息並將其傳遞給另一個活動(主要活動)。試圖加載微調位置/值導致崩潰在Integer.parseInt()

當用戶返回到設置頁面時,它將加載用戶之前輸入的所有值。目前加載我的EditText字段時沒有問題,但性別使用Spinner(男性/女性),Settings輸入代碼時會崩潰。

它似乎在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 [email protected]f08b0 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 [email protected]f08b0 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 [email protected]f08b0 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 [email protected]e27f0 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 [email protected]e27f0 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 [email protected]e27f0 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) 

回答

0

解析「性別」字符串到整數之前,檢查它是否不爲空或空白,然後repalce您爲setSelection()用這個 -

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

@ altern4te線你的問題解決了嗎? –

+0

剛剛嘗試過,仍然崩潰,這次是整個應用程序而不是僅僅是活動。 – altern4te

+0

@ altern4te顯示崩潰日誌。 –