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

안드로이드 onclick이벤트 시에 배열에 int 값을 저장하고 intent로 값을 넘겨주고 싶습니다.

0 추천
    public void onClick(View v) {
        int[] result = new int[3];
        switch (v.getId()) {
            case R.id.eat1:
                result[0] = 1;
                break;
            case R.id.eat2:
                result[1] = 1;
                break;
            case R.id.eat3:
                result[2] = 1;
                break;
            case R.id.next_btn:
                Intent intent = new Intent(this, NextActivity.class);
                for(int i = 0; i <3; i++){
                intent.putExtra("Result", result[i]);
                }
                startActivity(intent);
                break;

이렇게 값을 넘기고 NextActivity에서는 이렇게 받았는데 값이 제대로 안넘어옵니다. 

        Intent i = getIntent();
        int[] result = i.getExtras().getIntArray("Result");
        System.out.println(result[0]);
        System.out.println(result[1]);
        System.out.println(result[2]);

잘못된 부분이 있나요?

양꼬양 (2,040 포인트) 님이 2015년 8월 25일 질문
int[] result를 전역변수로 빼세요...온클릭시마다 초기화됩니다
그러내요 onclick 할때마다 새로 만들어지내요.
static으로 만드시던지 멤버로 만드시던지 해서 result가 초기화 되지 않도록해야 겠내요.
초기화 되니까 버튼 누르면 다 0으로 되는것 같내요. 거것만 해결하시면 잘넘어가는듯하내요.^^

2개의 답변

0 추천
            for(int i = 0; i <3; i++){
             intent.putExtra("Result", result[i]);
             } 

intent.putExtra("Result",result);

로 해보세요

putExtra(String name, int[] value)

요 형식입니다.

컴러기 (22,230 포인트) 님이 2015년 8월 25일 답변
답변 감사합니다. 적어주신대로 했는데 값이 0으로만 넘어가네요 ㅠㅠ
설마 저 result라는 배열에 값 안넣어주고 넘기신건 아니겠죠?
배열에 값을 안넣어주고 넘겼다는게..
result[0] = 1;
result[1] = 1;
result[2] = 1;
이게 값을 넣어준거 아닌가요? ㅠㅠ
0 추천
putextra로 int를 넘길 경우 값 전달이 안됩니다.

 

Bundle로 담아 전달하세요.
익명사용자 님이 2015년 8월 25일 답변
...