brunch

빠르게 배우는 안드로이드 -17
Intent -3

엑티비티간의 데이터 전송(기본데이터형) -1 + Log

by 윤형도


에 이어서 진행합니다.


이번에는 이어서 두 엑티비티간의 데이터를 주고 받는 방법을 알아보겠습니다.


Intent intent3 = new Intent(MainActivity.this,Main2Activity.class);
startActivity(intent3);

로 Main2Activity를 실행시킬수있었는데요

putExtra(key, value) 메소드를 이용해서 데이터들을 전송할수있습니다.

1*Bu7WZlr5UxCfi7oFjWs8IA.png

다양한 데이터 타입을 전송할수있는것을 알수있습니다.

기본 데이터 타입이 아닌 자신이 구성한 클래스등을 전송하려면 약간의 추가 사항이 필요합니다 이것은 다음강의에서 알아보도록하겠습니다.

우리가가진 string인 핸드폰 번호(num_textView에 입력되있음)와 1234라는 임의의 숫자를 Main2Activity로 전송해보도록 하겠습니다.

다음과 같이 intent3 부분에 putExtra 메소드를 추가합니다.

case R.id.activity2_btn :
Intent intent3 = new Intent(MainActivity.this,Main2Activity.class);
intent3.putExtra("tel",num_textView.getText().toString());
intent3.putExtra("cnum",1234);
startActivity(intent3);
break;

이제 전송준비는 끝났습니다. Main2Activity.java 파일로 이동하여 해당 자료를 받아보도록합시다.

멤버에 Intent intent를 추가하고
전화번호와 임의의 숫자를 받을것이므로 String phone, int cnum 또한 멤버에 추가하고
setContentView()아래에 intent= getIntent();를 입력하여 인텐트를 받습니다.


Main2Activity

public class Main2Activity extends AppCompatActivity {
Intent intent; //멤버추가
String phone;
int cnum;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
intent = getIntent(); //getIntent()로 받을준비

}
}

먼저 intent3.putExtra(“tel”,num_textView.getText().toString());로
key를 tel 데이터가 num_textView.getText().toString을 전송한부분을 Main2Activity에서 받아보도록하겠습니다. String 타입을 전송했으므로 intent에서 String을 받아야합니다
getStringExtra(key)를 통해서 string을 받을수 있습니다.

phone = intent.getStringExtra("tel"); 을 추가합니다.

이제 번호를 받았으니 int형의 cnum부분을 받아야합니다.
intent.getIntExtra(“key”,default_value)를 이용하여 받을수있습니다.

getStringExtra와 다른 점은 default_value를 필요로하다는것인데 이는 이전 엑티비티에서 새 엑티비티를 호출할때 intent로 데이터를 넘겨주지 않았을때 기본 데이터를 넣어주는 역할을 수행합니다.
실습 해보시려면 MainActivity에서 intent3.putExtra(“cnum”,1234);부분을 주석처리하시면 실습해보실수있습니다.

cnum = intent.getIntExtra("cnum",0);을 추가합니다


public class Main2Activity extends AppCompatActivity {
Intent intent;
String phone;
int cnum;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
intent = getIntent();
phone = intent.getStringExtra("tel");
cnum = intent.getIntExtra("cnum",0);

}
}

이제 잘 나오는지 확인을 해보도록합시다.
우리는 지금까지 Toast와 TextView 등 위젯에 데이터를 입력하여 화면에 출력하는방법을 했었는데요 이번에는 안드로이드에서 제공하는 Log툴을 이용하여 데이터를 확인해보도록하겠습니다.

Log.v(String tag,String message)

을 통하여 tag부분에 메시지의 이름 message 부분에 message를 입력하면 출력이됩니다.


다음의 코드를 추가 하여 줍니다.

Log.v("Main2Activity","phone : " + phone);
Log.v("Main2Activity","cnum : " + cnum);


Main2Activity

public class Main2Activity extends AppCompatActivity {
Intent intent;
String phone;
int cnum;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
intent = getIntent();
phone = intent.getStringExtra("tel");
cnum = intent.getIntExtra("cnum", 0);
Log.v("Main2Activity","phone : " + phone);
Log.v("Main2Activity","cnum : " + cnum);

}
}


이제 애뮬레이터로 실행을해봅니다.

1*8EzCgvcznh6QXFL8HATUYw.png

Activity2버튼을 클릭합니다

1*beiamd5aFDPi8Ns4BXvDVA.png

화면에 아무런 변화가 없는것을 볼수있습니다.

Log는 화면에 보이는것이아닌 안드로이드 스튜디오에 Logcat이라는 툴부분 보이는 기능입니다. 안드로이드 스튜디오에 하단에 다음부분을 확인해봅시다

1*HZWdQSKLRiqUmfqouW4yZg.png

다음과 같이 로그가 출력된것을 확인할수있습니다

1*eHk7WgECw4gsM76qSQxrTA.png

저는 애뮬레이터에서 실행했기때문에 이렇게 로그를 쉽게 확인할수있었지만 핸드폰의 경우 다른 앱에서 실행되는 로그들 때문에 위로 올라가 버려서 확인이 힘든 경우가 생길수있습니다.

1*AhM4w1E-DhZcDOpCgFsa3w.png

검색부분에 우리가 Tag로 입력했던 Main2Activity를 입력해봅시다다음과 같이 Main2Activity만 출력되는것을 볼수있습니다.

1*dHEeFzYGmRrAui0pnfXf8Q.png
1*6vcJDQByz7OE8t7v6Bzq7w.png

로그 레벨 교체

안드로이드 Log.v, Log.d, Log.i 등 각각의 역할 등에 따라서 구별하여 Log를 level 에 따라서 출력할수 있게 카테고리가 나누어져있습니다. 이는 나누어 놓았을 뿐이지 중요한 기능은 아닙니다.

검색 기능을 통해서가 아니라 계속해서 TAG를 필터링하여 보고싶을때는
Edit Filter Configuration 기능을 이용하면됩니다.

1*hbEFnTWWlwiFuq3r88bWjQ.png
1*6Py7e--WPddPVHhDvrv-tQ.png

다음과 같은 화면이 뜨는데 가장 간단하게 하는방법은 Log_TAG에 입력한 TAG를 입력하고 Log Level 부분을 맞추고 OK를 누르면됩니다.

1*8JvgV5Ed0pcupT4BlmQvRw.png

우리의 예제에 맞게 간단한 필터 설정

가장오른쪽에 필터 부분을 FilterName에 맞게 변경하면 다음과 같이 필터가 되어 뜨는것을 볼수있습니다.

1*SP9Q3x6f91Wcke9Eoe1Cxw.png

다음 강좌에는 Main2Activity를 종료할때 데이터를 MainActivity에 전송해주는 실습을하겠습니다.

keyword
매거진의 이전글빠르게 배우는 안드로이드 -16 Intent -2