티스토리 뷰

  우선 앞에서 Intent에 관해서 예제 2개를 알아 보았습니다.


Intent 예제(1) 안드로이드 Activity 이동

Intent 예제(2) 안드로이드 어플 사용


  이번에 코드 짤일이 있어서 짜고 있는데 Intent로 변수를 전달 해줄 일이 생겨서 확인 해보니 이러한 내용을 적은적이 없어 한번 살펴보려고 합니다~!


Intent로 변수 전달?

  앞선 예제(2)에서 사용중인 어플에서 안드로이드 기본 어플로 Intent를 통한 실행과 주소값, 번호(숫자)를 전달하는것을 해보았습니다. 이제 그러한 변수 전달을 사용중인 앱상에서 Activity를 이동간에 이루어지도록 해보겠습니다. (물론 한쪽에서 static 형태로 변수를 선언하였다면 이 방법을 통하지 않고도 다른 쪽 Activity에서 사용이 가능 할 것입니다.)


Activity간 변수를 전달 해보자!

  결론적으로는 Activity간 변수(값) 전달이지만 위에서는 Intent로 변수를 전달한다고 써져있는걸 확인 하실 수 있습니다. 실제로 Intent의 메서드를 이용해서 전달을 해서 그렇게 말씀드렸습니다. 일단 사용한 코드는 Intent 예제(1)에서 사용했던 코드를 조금만 변형하여 사용하였습니다. MainActivity는 다음과 같이 작성하였습니다.(int a = 3; 추가)


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public class MainActivity extends AppCompatActivity {
    Button btn;
    int a = 3// 변수 하나를 추가하였습니다
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        btn = (Button) findViewById(R.id.button);
 
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(MainActivity.this, SecondActivity.class);
                startActivity(intent);
            }
        });
 
    }
}
cs


SecondActivity는 MainActivity에서 변수(값)를 잘 받아왔는지 확인하기 위해서 TextView를 추가하였습니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public class SecondActivity extends AppCompatActivity {
    Button btn;
    TextView view;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);
 
        btn = (Button) findViewById(R.id.button2);
        view = (TextView) findViewById(R.id.textView);
 
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(SecondActivity.this, MainActivity.class);
                startActivity(intent);
            }
        });
 
    }
}
cs


  이제 두개의 Activity에서 값을 주고 받아 보겠습니다.


1
intent.putExtra("passData",a);
cs

  MainActivity에서 intent를 생성한 후 putExtra를 통해서 인자로 "passData"와 a를 주고 있는것을 보실 수 있습니다. 이 때 "passData"는 Key값 즉 넘겨주는 값의 id 값이라고 생각하시면 됩니다. 변수와 달라 혼동이 될 것 같으면 "a"와 같이 똑같은 이름을 사용해 주시면 혼동을 피할 수 있습니다! 지금은 예제이므로 데이타를 넘겨준다는 뜻이서 "passData"를 사용하였습니다.이제 SecondActivity에서 변수(값, data)를 받아보겠습니다.


1
2
3
Intent main_intent = getIntent();
 a = main_intent.getIntExtra("passData",-1);
 view.setText(""+a);
cs

  MainActivity에서 만들었던 intent를 받아올 것이므로 main_intent란 이름으로 선언해주고 getIntent로 받아왔습니다. 아까 putExtra로 주었던 값이 int형 이였으므로 미리 선언해둔 int a에 getIntExtra로 "passData"란 key에 들어있는 값을 받아오고 있습니다 뒤의 인자로 들어간 '-1'은 Default 값으로 값이 없을 경우에는 '-1'이 a로 들어갈 것입니다. 그리고 TextView에 setText를 이용해서 a의 값을 집어넣었는데 setText는 String 형식이여야 하므로 앞에 ""을 추가해 주어 String형식으로 간단하게  type 변환을 시켜주었습니다. 실행결과를 확인해 보겠습니다.



  MainActivity에서 Go 버튼을 눌러 SecondActivty로 간뒤 putExtra로 준 3이란 값을 잘 받아서 출력하고 있는것을 볼 수 있습니다! 안드로이드 스튜디오에서 putExtra를 입력하시면 String Double Int등등 다양한 type을 지원하는 것을 확인하실수 있습니다. 따라서 원하는 값을 Key를 통해 전달하여 값을 잃어버리지 않고 새로운 Activity에서 사용하실수있습니다!! 수고하셨습니다~


댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday