2012-07-27 5 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)); 

을 지금은 특정 활동을 열려고있을 때 나는 다음과 같은 로그 캣 오류 얻을 : 내 DB에 저장된 스피너 선택에 따라

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

을, '잘못된 int'편지가 바뀔 수 있습니다. 본질적으로, 전체 DB 문자열의 집합, I는 회 전자의 positionId해야한다 최초의 제로 인덱스의 문자를 발견, 숯불로 변환, 그것을에서 당기는거야

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

따라서 추가 텍스트로 저장되고 선택 및 변환을 int로 변환하고 마지막으로 해당 int를 사용하여 동일한 배열에서 읽는 새 회 전자에 선택 항목을 설정합니다.

아래로 도움을 청합니다.

+0

디버그 로깅을 추가하고 다음과 같이 출력하십시오.'takeBundledData.getString ("clickeduCategPos")'. 그것은 아마 당신이 생각하는 것이 아닙니다. –

+0

죄송합니다. 아마도이 문제를 도와 줄 수 있습니다. 내가 사용하고있다 'bundleduCategoryPos = takeBundledData.getString ("clickeduCategPos"); \t \t Log.d (TAG, bundleduCategPos); ' 로그에 아무것도 나타나지 않습니다. 이 일을 제대로하고 있습니까? 내가 logcat에서 출력을 볼 수 있어야한다고 가정? – Ronnie

+0

출력을 확인하기 위해'setSelection()'을 차단하고 텍스트 뷰와 토스트를 사용했습니다. 'takeBundledData.getString ("clickeduCategPos")의 출력은 올바른 "4 Position"입니다. 'String.valueOf (bundleduCategoryPos.charAt (0)); '의 결과는 4이며 올바른 것입니다. 'Integer.parseInt (CategoryPosition)'을 실행하려고하면 충돌이 발생하므로 변환과 관련이 있습니다. string을 int로 변환하는 또 다른 방법을 알고 있습니까? – Ronnie

답변

0

나는 그것을 해결했습니다 ... 기여한 2 가지 다른 문제점을 찾아 냈습니다. 문제 1 - 먼저 int로 변환하지 않고 문자열을 입력 할 때 선택이 수행되지 않았습니다. 나는 선택이 이루어지고 사실이었다 실현,하지만 난 3 개 스피너 있었다 때문에 NumberFormatException이가 발생 된 다음 문제

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

대신

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

을 사용 나는 그것을보고되지 않았다이었다 내 DB에 3 세트를

getSelectedItemId(); 

저장하고 다시 호출하십시오.

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

는 위의 예에서 "N"이었다 문자열 배열에서 선택한 문자열의 첫 번째 문자를 반환 그래서 내가 실수로 ID를 잘못 열의 중 하나를 호출했다.