2012-07-27 111 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”返回选定的字符串的第一个字符。