2012-07-27 92 views
0

我敢肯定這很簡單,我只是忽略或做一些愚蠢的事情,但我保存了一些數據庫的輸入,一個是在微調選擇的選項,並使用其存儲爲文本:設置微調選擇基於以前的微調選擇

idCategory = (add_category_spinner.getSelectedItemPosition() + " Position"); 

現在,在另一個活動,我想有另一個微調器設置爲完全一樣的選擇。我這樣做是使用:

private String CategoryPosition 

onCreate(...etc) 

update_category_spinner = (Spinner) findViewById(R.id.update_category_spinner); 
    ArrayAdapter<CharSequence> category_adapter = ArrayAdapter.createFromResource(
      this, R.array.category_array, android.R.layout.simple_spinner_item); 

    category_adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
    update_category_spinner.setAdapter(category_adapter); 

bundleduCategPos = takeBundledData.getString("clickeduCategPos"); 

CategoryPosition = String.valueOf(bundleduCategPos.charAt(0)); 
update_category_spinner.setSelection(Integer.parseInt(CategoryPosition)); 

現在,當我試圖打開一個特定的活動,我得到以下logcat的錯誤:

java.lang.NumberFormatException: Invalid int: "N" 

根據保存到我的數據庫的微調選擇,那'invalid int'字母可以改變。從本質上講,整個數據庫被保存爲字符串集,因此額外的文本

".getSelectedItemPosition() + " Position");" 

我拉它,轉換爲char,發現這應該是微調的positionId第一零索引字符選擇,並將其轉換回int,最後使用該int來設置在從同一個數組讀取的新微調器上的選擇。

請欣賞一些愚蠢的援助請。

+0

首先添加調試日誌並輸出:'takeBundledData.getString(「clickeduCategPos」)'。這可能不是你認爲的。 – 2012-07-27 19:34:54

+0

對不起,也許你可以幫助我。我正在使用 'bundleduCategPos = takeBundledData.getString(「clickeduCategPos」); \t \t Log.d(TAG,bundleduCategPos);' 但日誌中沒有顯示任何內容。我做對了嗎?我假設我應該能夠看到logcat中的輸出? – Ronnie 2012-07-28 01:55:17

+0

我已經封鎖了我的'setSelection()'並使用textviews和toasts來確認輸出。 'takeBundledData.getString(「clickeduCategPos」)'的輸出是「4 Position」,這是正確的。 'String.valueOf(bundleduCategPos.charAt(0));'的輸出是4,這是正確的。 當試圖輸出'Integer.parseInt(CategoryPosition)'時,它崩潰了,顯然它與轉換有關。 你知道另一種將字符串轉換爲int的方式嗎? – Ronnie 2012-07-28 02:10:17

回答

0

好的,我已經解決了它...找到2個不同的問題貢獻。 問題1 - 當我輸入字符串而沒有首先轉換爲int時,沒有進行選擇。我意識到選擇實際上正在取得,但我沒有看到它爲我所用

update_category_spinner.setSelection(Integer.parseInt(CategoryPosition)); 

,而不是

update_category_spinner.setSelection(Integer.parseInt(CategoryPosition), true); 

接下來的問題中,被NumberFormatException的發生,因爲我有3個紗廠,是保存3套

getSelectedItemId(); 

我的數據庫,然後回電話。我不小心被調用的Id的從錯誤的列中的一個,所以

CategoryPosition = String.valueOf(bundleduCategPos.charAt(0)); 

從字符串數組,它在上述例子中爲「N」返回選定的字符串的第一個字符。