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

인텐트의 어레이 리스트 값전달에 대해 질문있습니다.

0 추천

 

안녕하세요~

인텐트를 통한 값전달에 있어서 제데로 넘어가지 않아서 어디가 문제인건지 알고 싶어서 글을 올렸습니다.

현재 아래는 aaa클래스이며 인텐트를 통해서 bbb로 보냈을때 텍스트뷰에 잘 나옵니다.

그런데 bbb에서 받은것을 다시 ccc에 있는 텍스트뷰에 찍어주려고 하는데.. 어디가 오류인지 감을못잡고 있네요..

아래의 소스중에서 어디가 문제이길래, bbb의 텍스트뷰에서는 잘 나오던것이 ccc에서는 잘 안나오는지 모르겠습니다.

소스가 조금 넘치는 부분은, 아래의 댓글부분에 이어서 달아보겠습니다.

 

처음에 aaa-> bbb로 인텐트를 통해서 값을 전달합니다.

ArrayList<Integer> mSeat = new ArrayList<>(); 
Button = (Button) findViewById(R.id.SelectionAccess);
Button.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {

        Intent intent = new Intent(getApplicationContext(), aaa.class);

        intent.putExtra("Seat_Total_Mount", Total_Amount); .
        intent.putExtra("Adult_number", mAdult_Count); 
        intent.putExtra("School_number", mSchool_Count); 
        intent.putExtra("Senior_number", mSenior_Count); 

        int idx=0;
        for (int i=0; i < mSeat.size (); i++) {

                TextView tv = (TextView)findViewById(mSeat.get(i));

                if ((int)tv.getTag () == SEAT_SELECTED){
                    intent.putExtra ("seat" + idx, tv.getText().toString());
                    idx++;
                }
        }

        startActivity(intent);
    }
});

그리고 bbb에서는 아래와 같이 받아서, 텍스트뷰에 잘 찍힘을 확인을 했습니다.

아래의 어레이리스트는 위쪽에 따로 선언

ArrayList<String> selectedSeatNameList = new ArrayList<String>();
TextView txt_seat;
int adultNumber = getIntent().getIntExtra("Adult_number", 0);
int schoolNumber = getIntent().getIntExtra("School_number", 0);
int seniorNumber = getIntent().getIntExtra("Senior_number", 0);
int totalNumber = adultNumber + schoolNumber  + seniorNumber ;

온크리트 아래쪽에 아래와 같이 선언

for(int i = 0; i < totalNumber; i++){
    selectedSeatNameList.add(getIntent().getStringExtra("seat" + i));
}

txt_seat = (TextView)findViewById(R.id.Seat_Text);
String seats = "";

for(int i=0; i<selectedSeatNameList.size ();i++) {
    seats += selectedSeatNameList.get (i);
    if (i < selectedSeatNameList.size () - 1){
        seats  += ", ";  
    }
}

txt_seat.setText(seats);      

 

Kind카인드 (3,600 포인트) 님이 2016년 11월 29일 질문
이렇게 잘 나오는 부분을, ccc에서도 잘 나오게 하고 싶어서 bbb의 인텐트 버튼부분에 이렇게 적었습니다.
Tab3_Payment_Button = (Button) findViewById(R.id.Third_Tab_Button);
Tab3_Payment_Button.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {

        Intent it = new Intent(getApplicationContext(),ccc.class);

        it.putExtra("Receive_Total_Money",Receive_Total_Money);
        it.putExtra("Receive_Adult_number",Receive_Adult_number);
        it.putExtra("Receive_School_number",Receive_School_number);
        it.putExtra("Receive_Senior_number",Receive_Senior_number);

        for (int i = 0; i < selectedSeatNameList.size (); i++){
            it.putExtra ("seat" + i, selectedSeatNameList.get (i));
        }
        startActivity(it);
    }
});

그리고 ccc클래스에서 아래와 같이 받았습니다.
 
TextView txt_seat;
ArrayList<String> selectedSeatNameList = new ArrayList<String>();


그리고 oncreate 아래부분에 똑같이 써주었는데.. 어디가 문제여서 값이 제데로 안찍히는지 모르겠습니다.
int adultNumber = getIntent().getIntExtra("Adult_number", 0);
int schoolNumber = getIntent().getIntExtra("School_number", 0);
int seniorNumber = getIntent().getIntExtra("Senior_number", 0);
int totalNumber = adultNumber + schoolNumber  + seniorNumber ;

for(int i = 0; i < totalNumber; i++){
    selectedSeatNameList.add(getIntent().getStringExtra("seat" + i));
}

txt_seat = (TextView)findViewById(R.id.Payment_Seat_Number);
String seats = "";

for(int i=0; i<selectedSeatNameList.size ();i++) {
    seats += selectedSeatNameList.get (i);
    if (i < selectedSeatNameList.size () - 1){
        seats  += ", ";
    }
}

txt_seat.setText(seats);

1개의 답변

0 추천
 
채택된 답변

bbb Activity 에서 아래와 같이 전달했으므로 

 it.putExtra("Receive_Adult_number",Receive_Adult_number);
it.putExtra("Receive_School_number",Receive_School_number);
it.putExtra("Receive_Senior_number",Receive_Senior_number);

 

ccc Activity 에서도 아래와 같은 Key 값으로 받아야지요

int adultNumber = getIntent().getIntExtra("Receive_Adult_number", 0);
int schoolNumber = getIntent().getIntExtra("Receive_School_number", 0);
int seniorNumber = getIntent().getIntExtra("Receive_Senior_number", 0);

 

 

빅배스 (4,260 포인트) 님이 2016년 11월 29일 답변
Kind카인드님이 2016년 11월 29일 채택됨
...