마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

안드로이드 여러 텍스트 박스를 한꺼번에 변경시 배열 사용 오류

0 추천

스피너를 이용해서 여러개의 텍스트박스의 텍스트를 한꺼번에 변경하려고 합니다.

앞으로 개수가 많아질 것이기에 다른 xml에 string-array로 내용을 집어넣었습니다.

그런데 setText함수가 오류가 납니다. 인터넷에 setText는 string이 들어가는 걸로 보고 왔는데 아닌가요?

아니라면 어떤 방식으로 해결하면 좋을까요? 아예 다른 방식이라도 쓸 수 있으면 참고하겠습니다.

        Spinner job = (Spinner)findViewById(R.id.jobSpinner);

        job.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                Resources res = getResources();
                String[] s;
                TextView tv[]=new TextView[6];
                int[] numTvIds = {R.id.s0, R.id.s1};switch(position){
                    case 0:
                        s= res.getStringArray(R.array.E);
                        break;
                    case 1:
                        s= res.getStringArray(R.array.M);
                        break;
                }
                for(int i=0;i<numTvIds.length;i++){
                    tv[i]=(TextView)view.findViewById(numTvIds[i]);
                    tv[i].setText(s[i]);//이 부분에서 s[i]에 빨간 줄이 생깁니다.
                }
            }
        @Override
        public void onNothingSelected(AdapterView<?> parent) {}
    });

 

에반데 (160 포인트) 님이 2018년 9월 21일 질문
에반데님이 2018년 9월 21일 수정

2개의 답변

0 추천
String[] s; 변수가 선언만 되어 있고 데이터 할당이 되어 있지 않습니다.

그래서 s[i] 값을 구하지 못 해  에러가 나는 것으로

 String[] s = new String[]  { 출력할 데이터1, 력할 데이터2, ...};

와 같이 값을 채워 넣어 두세요.
익명사용자 님이 2018년 9월 21일 답변
아 죄송해요 너무 길어서 수정해서 올리다 보니 이걸 수정을 안했네요
s= res.getStringArray(R.array.E);
답변 감사합니다.
에러 해결했습니다.
0 추천

해결

Spinner job = (Spinner)findViewById(R.id.jobSpinner);
 
    job.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
            Resources res = getResources();
            String[] s=new TextView[7];
            TextView tv[]=new TextView[7];
            int[] numTvIds = {R.id.s0, R.id.s1};switch(position){
                case 0:
                    s= res.getStringArray(R.array.E);
                    break;
                case 1:
                    s= res.getStringArray(R.array.M);
                    break;
            }
            for(int i=0;i<numTvIds.length;i++){
                tv[i]=(TextView)findViewById(numTvIds[i]);
                tv[i].setText(s[i]);
            }
        }
    @Override
    public void onNothingSelected(AdapterView<?> parent) {}
});

 

에반데 (160 포인트) 님이 2018년 9월 21일 답변
...